Ответ 1
Я получил хэш MD5 с разными результатами как для ключа, так и для сертификата.
Это все говорит. У вас есть несоответствие между вашим ключом и сертификатом.
Модуль должен соответствовать. Убедитесь, что у вас правильный ключ.
Я не могу настроить SSL. У меня Googled, и я нашел несколько решений, но никто из них не работал у меня. Мне нужна помощь, пожалуйста...
Вот ошибка, которую я получаю, когда пытаюсь перезапустить nginx:
[email protected]:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed
Мой сертификат от StartSSL и действителен в течение 1 года.
Вот что я тестировал:
Я также проверил модуль, и я получил другой модуль как для ключа, так и для сертификата.
Благодарим вас за помощь.:)
Я получил хэш MD5 с разными результатами как для ключа, так и для сертификата.
Это все говорит. У вас есть несоответствие между вашим ключом и сертификатом.
Модуль должен соответствовать. Убедитесь, что у вас правильный ключ.
Как только вы установили, что они не совпадают, у вас все еще есть проблема - что с этим делать. Часто сертификат может быть просто собран неправильно. Когда ЦП подписывает ваш сертификат, они отправляют вам блок, который выглядит примерно так:
-----BEGIN CERTIFICATE-----
MIIAA-and-a-buncha-nonsense-that-is-your-certificate
-and-a-buncha-nonsense-that-is-your-certificate-and-
a-buncha-nonsense-that-is-your-certificate-and-a-bun
cha-nonsense-that-is-your-certificate-and-a-buncha-n
onsense-that-is-your-certificate-AA+
-----END CERTIFICATE-----
они также отправят вам пакет (часто два сертификата), которые представляют свои полномочия для предоставления вам сертификата. это будет выглядеть примерно как
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-your-request
-this-is-the-certificate-that-signed-your-request-this
-is-the-certificate-that-signed-your-request-this-is-t
he-certificate-that-signed-your-request-this-is-the-ce
rtificate-that-signed-your-request-A
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-for-that-one
-this-is-the-certificate-that-signed-for-that-one-this
-is-the-certificate-that-signed-for-that-one-this-is-t
he-certificate-that-signed-for-that-one-this-is-the-ce
rtificate-that-signed-for-that-one-this-is-the-certifi
cate-that-signed-for-that-one-AA
-----END CERTIFICATE-----
за исключением того, что, к сожалению, они не будут так четко обозначены.
Таким образом, общая практика заключается в том, чтобы объединить все это в один файл - ваш сертификат, а затем подписанные сертификаты. Но так как их нелегко различить, иногда случается, что кто-то случайно ставит их в другом порядке - подписывает сертификаты, а затем окончательный сертификат - не замечая. В этом случае ваш сертификат не будет соответствовать вашему ключу.
Вы можете проверить, что, по мнению серваста, он представляет, запустив
openssl x509 -noout -text -in yourcert.cert
Рядом с вершиной вы должны увидеть "Subject:", а затем материал, похожий на ваши данные. Если вместо этого он выглядит как ваш CA, ваш комплект, вероятно, не в порядке; вы можете попробовать сделать резервную копию, а затем перенести последний сертификат в начало, надеясь, что это тот, который является вашим сертификатом.
Если это не сработает, вам просто нужно будет вернуть сертификат. Когда я делаю CSR, мне нравится четко обозначать, на каком сервере он (а не только ssl.key или server.key), и сделать копию его с датой имени, например mydomain.20150306.key и т.д. их частные и открытые пары ключей вряд ли будут замешаны с другим набором.
Проверьте MD5-хэш открытого ключа, чтобы убедиться, что он совпадает с тем, что находится в закрытом ключе.
openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
У меня была эта проблема, потому что я добавил пакет и сертификат в неправильном порядке, так что, возможно, это могло бы помочь кому-то еще.
До (что неправильно):
cat ca_bundle.crt certificate.crt > bundle_chained.crt
После (что правильно)
cat certificate.crt ca_bundle.crt > bundle_chained.crt
И, пожалуйста, не забудьте обновить соответствующий файл conf (ssl_certificate должен теперь указывать на цепочку crt) как
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate bundle_chained.crt;
ssl_certificate_key www.example.com.key;
...
}
Если сертификат сервера и пакет были объединены в неправильном порядке, nginx не запустится и отобразит сообщение об ошибке:
SSL_CTX_use_PrivateKey_file(" ... /www.example.com.key") failed (SSL: error:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch)
Если это происходит, и вы используете Let Encrypt/certbot, причина, скорее всего, в том, что вы использовали chain.pem
вместо fullchain.pem
.
Это должно быть примерно так:
ssl_certificate /etc/certbot/live/example.com/fullchain.pem;
ssl_certificate_key /etc/certbot/live/example.com/privkey.pem;
У меня была та же проблема, и я наконец решил ее, изменив порядок блоков pem в файле сертификата.
Блок сертификата должен быть помещен в начало файла, затем в промежуточные блоки, затем в корневой блок.
Я понял эту проблему, сравнив проблемный файл сертификата с рабочим файлом сертификата.
В моем случае я хотел изменить сертификат ssl, потому что я изменил свой сервер, поэтому мне пришлось создать новый csr с помощью этой команды:
$openssl req -new -newkey rsa: 2048 -nodes -keyout mysite.key -out mysite.csr
Я отправил файл mysite.csr поставщику ssl компании и после получения сертификата crt, а затем перезапустил nginx, и у меня есть эта ошибка.
(SSL: ошибка: 0B080074: процедуры проверки x509: X509_check_private_key: несоответствие значений ключей)
После большого исследования ошибка заключалась в том, что модуль из ключевого файла не был таким же, как у файла crt
Итак, чтобы сделать это, я создал новый файл csr, но я изменил имя файла с помощью этой команды
$openssl req -new -newkey rsa: 2048 -nodes -keyout mysite_new.key -out mysite_new.csr
Затем я получил новый crt файл у поставщика компании, перезапустил nginx, и он сработал.
Мои 5 центов на вопрос:
У меня была такая же проблема. Примерно через 1 час после этого я обнаружил, что неправильно вставил сертификат.
Я столкнулся с этой проблемой (дважды) с помощью nginx, и ни одно из решений в этом посте не объяснило проблему. Сообщение в блоге здесь от хорошего джентльмена по имени Марко прибило это, и я вставляю это здесь для любого, кто также сталкивается с тем, что я видел. https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff
В моем случае, go-папа был CA, и это зависит от того, как они выпускают сертификат и промежуточные пакеты сертификатов.
С Nginx, если ваш CA включал промежуточный сертификат, вы должны создать единый файл сертификата в цепочке, который содержит ваш сертификат и промежуточные сертификаты CA.
Вы можете использовать эту команду для создания комбинированного файла с именем example.com.chained.crt:
cat example.com.crt intermediate.crt > example.com.chained.crt
Для Nginx;
1- openssl req -newkey rsa: 2048 -nodes -keyout domain.com.key -out domain.com.csr
2- SSL файл domain_com.crt и domain_com.ca-bundle файлы копируют новый файл в paste domain.com.chained.crt
3- Добавьте файлы nginx: a. ssl_certificate/home/user/domain_ssl/domain.com.chained.crt; б. ssl_certificate_key/home/user/domain_ssl/domain.com.key;
Поздний перезапуск Nginx
В моем случае проблема заключалась в том, что я создавал сертификаты, не вводя никаких данных в интерфейс cli. Когда я восстановил сертификаты и вошел во все поля: город, штат и т.д., Все стало хорошо.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
Это случилось со мной, когда я объединил bundle.crt и основной сертификат. Причина была в том, что я скопировал основной сертификат ниже bundle.crt. Должно быть наоборот
1/основной сертификат 2/bundle.crt