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"