Я пытаюсь установить SSL на свой обратный прокси-сервер nginx с сертифицированными ssl-ключами, но получаю это сообщение, когда пытаюсь перезапустить сервер:
Restarting nginx: [emerg]: SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/cert.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
configuration file /etc/nginx/nginx.conf test failed
все файлы имеют root: root с разрешениями 600. Я протестировал сертификаты, и они подтверждены на этом веб-сайте: http://ssltools.com/cert_key_match
в моих ключах нет замыкающих странных знаков, и в каждой строке по 64 символа
вот мой файл конфигурации
server {
listen 443;
server_name my.domain.com;
ssl on;
ssl_certificate conf.d/cert.pem;
ssl_certificate_key conf.d/cert.key;
location / {
proxy_pass http://upstream1;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Любые идеи? Спасибо
чек Вот
Надеюсь, вы скопировали следующие строки:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Другое решение, которое может сработать для других:
использовать .pem
файл для обоих ssl_certificate
и ssl_certificate_key
То есть:
...
ssl on;
ssl_certificate conf.d/cert.pem;
ssl_certificate_key conf.d/cert.pem;
...
У меня такая же проблема (из /var/log/nginx/error.log)
2019/03/20 01:25:41 [emerg] 2509#0: SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/sslcert/mm.merchantspring.com.au.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: ANY PRIVATE KEY error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
Затем я обнаружил, что мой ключевой файл также должен быть связан с сертификатом. После обновления ключевого файла перезапустите nginx, все работает.
Конфигурационный файл Nginx выглядит так:
ssl_certificate /etc/nginx/conf.d/sslcert/mywebsite.pem;
ssl_certificate_key /etc/nginx/conf.d/sslcert/mywebsite.key;
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Я получил ключевой файл с сайта godaddy вместо того, чтобы создавать его с помощью openssl. Но я думаю, что будет лучше, если сделать это с помощью openssl.
К вашему сведению, убедитесь, что ваш блок BEGIN идентичный ожидаемому блоку, символ за символом. Моя началась с 4 тире, а не 5. ----
против -----
. Сообщения об ошибках инструмента проверки не очень конкретны, когда вы делаете эту ошибку.