Мне удалось создать свои сертификаты с LE без ошибок, мне также удалось перенаправить свой трафик с порта 80 на порт 443. Но когда я перезагружаю свой сервер nginx, я не могу получить доступ к своему веб-сайту. Журналы ошибок Ngnix показывают эту строку:
4 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 192.168.0.104, server: 0.0.0.0:443
Я думаю, это означает, что он не может найти сертификаты, которые я затем перешел к пути сертификатов, и они оба там, в чем может быть проблема? Вот как выглядит моя конфигурация Ngnix:
server {
listen 80;
server_name pumaportal.com www.pumaportal.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name pumaportal.com www.pumaportal.com;
add_header Strict-Transport-Security "max-age=31536000";
ssl_certificate /etc/letsencrypt/live/pumaportal.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pumaportal.com/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;
access_log /var/log/nginx/sub.log combined;
location /.well-known {
alias /[MY PATH]/.well-known;
}
location / {
proxy_pass http://localhost:2000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Все это кажется довольно простым, я не понимаю, где может быть проблема.
После запуска nginx -t все выглядит нормально:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx
ssl
lets-encrypt
Рэй
источник
источник
server
блоки? Что именно вы сделали, когда получили эту ошибку?Ответы:
Я предполагаю, что у вас есть другой сервер, прослушивающий порт 443. На этом сервере не определен ssl_certificate, и он автоматически выбран (SNI). Попробуйте удалить все символические ссылки из / etc / nginx / sites-enabled, кроме этого одного сервера, с которым вы хотите работать (если это возможно, в противном случае проверьте все ваши серверы на предмет прослушивания 443 без правильной настройки).
источник
Я исправил эту же проблему ранее этим утром, поэтому я здесь, чтобы уточнить точку зрения CA (которая, теперь, когда я понимаю проблему, была хорошо решена), у вас, скорее всего, есть два серверных блока:
SNI будет совпадать только с теми, которые помечены
ssl
слушателем. Тем не менее, сервер по умолчанию будет захватывать весь входящий трафик на 443, независимо от SSL или нет. Следовательно, это фактически препятствует тому, чтобы SNI фактически работал вообще, сразу же, за счет накопления всего трафика для себя.Симптомы:
nginx -t
перезагрузкой и сервисом)Решения:
Я исправил проблему сегодня утром, удалив блок сервера по умолчанию, и, следовательно, позволил SNI совпадать на прослушивателях SSL.
Альтернативным решением было бы добавить
ssl
прослушиватель иssl_certificate
строки в блок сервера, чтобы SNI по существу был включен на вашем хосте по умолчанию. Вы по-прежнему будете получать ошибки SSL, так что это не лучшее решение, но оно позволит вашему SNI работать :)источник
Подайте заявку
default_server
на example.com или www.example.com. Не оба.Следовательно это будет работать:
Примечание о виртуальных хостах: убедитесь, что
default_server
параметр не определен где-либо еще - если у вас есть несколько хостов на сервере.источник
Опаздывает на игру как обычно, но так как она мне помогла ... Проверьте, не поврежден ли сертификат. При построении «унифицированной» ЭЛТ (ЭЛТ + промежуточный), делая
Я как-то потерял LF и получил такую строку:
вместо того
и nginx не получит сертификат и потерпит неудачу с ошибкой, упомянутой выше.
дела
дал мне ключ к открытию openssl.
источник
Проверьте правильность прав доступа к файлам для сертификатов. Пожалуйста, разместите список каталогов (
ls -la
)источник