it-swarm.com.ru

nginx не может загрузить сертификат ssl

Я должен добавить ssl (https) для веб-сайта, мне дали SSL.CSR и файл SSL.KEY. Я 'dos2unix' их (потому что они заканчиваются ^ 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)

Любая идея?

25
user21916

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

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

26
Mark Sturgill

К вашему сведению, вы можете проверить ключи просто позвонив:

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

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

14
Joseph Lust

Я столкнулся с этой проблемой при поиске в Интернете для SSL: ошибка: 0906D06C: подпрограммы PEM: PEM_read_bio: нет стартовой строки: Ожидается: TRUSTED CERTIFICATE
Я получил эту ошибку после запуска:

    nginx -t

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

    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
11
Christie

Я неправильно настроил сертификаты в файле 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"
2
Ershad Ahmad

Шаги на сайте NGINX для объединения вашего публичного сертификата с промежуточным сертификатом используют cat для объединения двух файлов. Но если ваш общедоступный файл сертификата не заканчивается новой строкой, строка -----BEGIN CERTIFICATE----- промежуточного сертификата будет добавлена ​​в конец строки -----END CERTIFICATE----- открытого сертификата, что приведет к неверному цепочечному файлу сертификата. Разделение этих двух строк вручную может исправить проблему.

0
MikeOnline