Nginx не может загрузить ssl certifacate

Мне нужно добавить ssl (https) для веб-сайта, мне был предоставлен SSL.CSR и файл SSL.KEY. Я "dos2unix" их (потому что они имеют trailing ^ M) и скопировал их на сервер (CSR → mywebsite.crt, KEY → mywebsite.key). Я сделал следующую модификацию для nginx.conf:

@@ -60,8 +60,13 @@
        }

     server {
-       listen       80;
+       listen       443;
         server_name  ...;
+       ssl                 on;
+       ssl_certificate     mywebsite.crt;
+       ssl_certificate_key mywebsite.key;
+       ssl_session_cache   shared:SSL:10m;
+       ssl_session_timeout 10m;
        # Set the max size for file uploads to 500Mb

        client_max_body_size 500M;

Ошибка при перезапуске nginx:

nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/mywebsite.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

Я полагаю, потому что первая строка файла mywebsite.crt содержит "REQUEST", поэтому я удаляю "REQUEST" из первой и последней строк и снова перезапускаю nginx и ударяю еще одну ошибку:

nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/mywebsite.crt") failed (SSL: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=algorithm, Type=X509_ALGOR error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=signature, Type=X509_CINF error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=cert_info, Type=X509 error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib)

Любая идея?

Ответы

Ответ 1

Вы никогда не должны делиться своим личным ключом. Вы должны рассмотреть ключ, который вы разместили здесь, скомпрометировали и сгенерировали новый ключ и запрос на подпись.

У вас есть запрос сертификата, а не фактический подписанный сертификат. Вы предоставляете запрос ( "CSR" ) подписывающей стороне. Они используют этот запрос для создания подписанного сертификата ( "CRT" ), который они затем предоставляют вам. Ключ никогда не раскрывается никому.

Ответ 2

Я столкнулся с этой проблемой при поиске в Интернете по SSL: ошибка: 0906D06C: PEM-процедуры: PEM_read_bio: нет стартовой строки: Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ
Я получил эту ошибку после запуска:

    nginx -t

Проблема была в том, что отсутствовали cert.pem и cert.key

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

Ответ 3

FYI, вы можете проверить ключи, только что вызывающие:

openssl x509 -noout -text -in your.crt
openssl rsa -noout -text -in your.key

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

Ответ 4

Я неправильно настроил сертификаты в gitlab.rb файле. Простая ошибка заняла много времени, чтобы понять.

nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.crt"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.key"

Вместо


nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/self-ssl.key"