Я пытаюсь установить LetsEncrypt
на моем сервере (к которому у меня есть root-доступ по SSH), для staging.dnslaude.com
- общедоступный домен, указывающий на 213.212.81.89
.
Сервер работает ubuntu 16.04
, и nginx
веб сервер. Ниже nginx
config:
server {
listen 80;
server_name staging.dnslaude.com;
root /path/to/webroot;
location ^~ /.well-known/acme-challenge/ {
try_files $uri $uri/ =404;
}
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443;
ssl on;
ssl_certificate /path/to/self/signed/certificate.crt;
ssl_certificate_key /path/to/key.key;
server_name staging.dnslaude.com;
root /path/to/webroot;
# ....
location ^~ /.well-known/acme-challenge/ {
try_files $uri $uri/ =404;
}
}
Вы можете видеть, что nginx
config появляется работать, так как я вручную поместил файл в acme-challenge
папка Вот.
Однако когда я запускаю команду:
letsencrypt certonly --webroot -w /path/to/webroot -d staging.dnslaude.com
Он возвращает следующую ошибку:
Ошибка авторизации. staging.dnslaude.com (http-01): urn: acme: error: connection :: Серверу не удалось подключиться к клиенту для проверки домена :: Не удалось подключиться к staging.dnslaude.com
ВАЖНЫЕ ЗАМЕЧАНИЯ: - Сервер сообщил о следующих ошибках:
Домен: staging.dnslaude.com Тип: сведения о подключении: не удалось подключиться к staging.dnslaude.com
Чтобы исправить эти ошибки, убедитесь, что ваше доменное имя было
введены правильно, а DNS-записи A для этого домена
содержат правильный IP-адрес. Кроме того, проверьте, что
ваш компьютер имеет общедоступный маршрутизируемый IP-адрес, и что нет
брандмауэры не позволяют серверу взаимодействовать с
клиент. Если вы используете плагин webroot, вам также следует проверить
что вы обслуживаете файлы из указанного вами корневого пути.
Я следовал инструкциям по базовой настройке, изложенным Вот, и перепробовали всевозможные варианты конфигурации, например предложенные Вот. Однако я не могу обойти указанную выше ошибку и не вижу ничего в файле журнала, чтобы указать причину.
Какие-либо предложения?
Ваша конфигурация nginx выглядит правильно.
Догадываясь, я сбежал nmap
против вашего домена (поскольку вы включили его в свой вопрос); Похоже, что вы в настоящее время фильтруете порт 80, поэтому LetsEncrypt не может подключиться извне и проверить.
Вам необходимо убедиться, что порт 80 доступен извне на локальном брандмауэре рассматриваемого сервера (а также любых ACL, которые могут быть на месте у провайдера vhost или аналогичного).
Эта ошибка также может возникнуть, если вы перенаправляете запрос http-01 с http на https. Каталог .well-known / acme-challenge должен быть доступен через http на порт 80.
Они намеренно запутываются. У меня была та же ошибка 400, и я снова начал копаться в кроличьей норе с обновлением. Раньше были разные ошибки. Решение: удалите предыдущие сертификаты из SSL бесплатно и удалите просроченный сертификат с сервера. (Хотя просроченный сертификат все еще настроен и активен, вы никогда не получите новый) jar2