В / etc / ssl, когда я делаю sudo openssl verify mywebsite.pem
Я получаю сообщение о том
mywebsite.pem: OU = GT46830179, OU = See www.rapidssl.com/resources/cps (c)15, OU = Domain Control Validated - RapidSSL(R), CN = *.logitapp.com
error 20 at 0 depth lookup:unable to get local issuer certificate
Я создал mywebsite.key, скопировав из генератора сертификатов sslpoint в nano. Я создал mywebsite.pem, запустив sudo cat mywebsite.crt sslpointintermediate.crt >> mywebsite.pem
. Создал mywebsite.crt и sslpointintermediate.crt путем вставки в nano из электронного письма sslpoint отправил мне.
mywebsite.pem и mywebsite.key на самом деле не являются именами файлов.
Использование Debian 8. Попытка заставить nginx и gunicorn работать с ssl. Возникли проблемы с этим, и я думаю, что это (по крайней мере, частично), потому что сертификаты ssl каким-то образом установлены неправильно, как указано в приведенном выше выводе. Как я могу это решить?
РЕДАКТИРОВАТЬ:
В предыдущей версии этого вопроса я также спрашивал о проверке файла .key с помощью openssl. Я удалил эту часть вопроса, так как нет смысла пытаться это сделать.
Если вы хотите использовать openssl verify
, вы должны вместо этого использовать:
openssl verify -CAfile your-intermediates-and-final.pem mywebsite.crt
с your -mediates-and-final.pem со всеми промежуточными и конечными (доверенными якорями), объединенными внутри, в формате PEM. Если вы хотите использовать -CApath /etc/ssl/certs
вариант, каждый промежуточный сертификат должен находиться в каталоге / etc / ssl / certs, и вы должны выполнить как root:
$ c_rehash
Ключ содержит только закрытый ключ и не содержит сертификата, поэтому нет смысла проверять его "openssl".
Кажется, nginx настроен правильно. Убедитесь, что разрешения верны и у вас есть два следующих параметра конфигурации в вашем server {}
или http {}
раздел:
ssl_certificate /path/to/your/mywebsite.pem;
ssl_certificate_key /path/to/your/mywebsite.key;
и в вашем server {}
раздел:
listen 443 ssl;
OpenSSL нужно запускать от имени пользователя root только тогда, когда ему нужно читать личные данные как закрытые ключи в /etc/ssl/private/
. Для проверки сертификата рут не нужен. Сертификаты в /etc/ssl/certs
должен быть доступен для чтения всем, чтобы каждый пользователь и программное обеспечение могли проверять сертификаты. Или вы вводите пароль root каждый раз, когда заходите на сайт?
$ openssl verify mywebsite.pem
mywebsite.pem: OU = GT46830179, OU = See www.rapidssl.com/resources/cps (c)15, OU = Domain Control Validated - RapidSSL(R), CN = *.logitapp.com
error 20 at 0 depth lookup:unable to get local issuer certificate
Глядя на страницу руководства verify (1ssl):
2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate
the issuer certificate of a looked up certificate could not be found. This normally means the list of trusted certificates is not complete.
Вам необходимо предоставить openssl некоторую информацию о том, где в цепочке требуются сертификаты:
openssl verify [-CApath directory] [-CAfile file] [-untrusted file] [certifictes]
Например:
openssl verify -CAfile RootCert.pem -untrusted Intermediate.pem UserCert.pem
Смотрите также этот вопрос на SO
$ openssl verify mywebsite.key I get a message saying
unable to load certificate
139893743232656:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Сертификат не может быть загружен, поскольку вы указали закрытый ключ. Это противоположно сертификату, который содержит открытый ключ с дополнительной информацией о цепочке сертификатов, сроке действия и т. Д. В сообщении об ошибке четко указано, что ожидается: Expecting: TRUSTED CERTIFICATE
Вам нужно только «установить» корневой сертификат, если он еще не пользуется доверием в вашей ОС и вы хотите, чтобы ему доверяли. Но когда вы говорите о серверах, нет смысла включать сертификат вашего собственного домена в хранилище доверенных сертификатов. Ваше программное обеспечение (nginx) в этом случае должно иметь доступ к файлу сертификата, включая полную цепочку доверия, от конечного сертификата вашего домена до корневого сертификата вашего центра сертификации (необязательно).
См. Документацию к nginx, поищите другие вопросы такого рода (в Интернете, включая SE и SF) их полно, или дайте точное и подробное описание вашей проблемы.
ты должен кошка все сертификаты для окончательного CA_Chain.crt:
cat RootCA.crt IntermediateCert1 IntermediateCert2> CA_Chain.crt
openssl verify -CAfile CA_Chain.crt website.crt
(подпись website.crt от IntermediateCert2)
Похоже, что awscli использует локальный openssl вашей системы для проверки сертификатов. На моем Mac у меня openssl версии 0.9.8, и мне не удалось проверить свой сертификат. Вы можете проверить версию вашего openssl, написав команду
openssl version
Я переключился на систему, содержащую openssl версии 0.10, и проблема устранилась. Вы также можете обновить свою версию openssl.
Я попытался загрузить сертификат еще раз, и у меня это сработало.