Назад | Перейти на главную страницу

Конфигурация nginx не работает с ключом SSL / pem (уникальный случай)

Я пытаюсь установить 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, все работает.

Мой Env:

Конфигурационный файл Nginx выглядит так:

    ssl_certificate /etc/nginx/conf.d/sslcert/mywebsite.pem;
    ssl_certificate_key /etc/nginx/conf.d/sslcert/mywebsite.key;

mywebsite.pem (в цепочке, всего 4 сертификата. cat mywebsite.crt intermediate.crt> mywebsite.pem):

-----BEGIN CERTIFICATE-----
...

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...

-----END CERTIFICATE-----

mywebsite.key: (связан с crt и ключом)

-----BEGIN CERTIFICATE-----
 ...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

Я получил ключевой файл с сайта godaddy вместо того, чтобы создавать его с помощью openssl. Но я думаю, что будет лучше, если сделать это с помощью openssl.

К вашему сведению, убедитесь, что ваш блок BEGIN идентичный ожидаемому блоку, символ за символом. Моя началась с 4 тире, а не 5. ---- против -----. Сообщения об ошибках инструмента проверки не очень конкретны, когда вы делаете эту ошибку.