Протокол SSL: ошибка:0B080074:x509-на процедуры, сертификат x509 в проверить закрытого ключа:ключа значениям рассогласования
Я не могу настроить SSL. Я погуглил и нашел несколько решений, но ни одно из них не работало для меня. Мне нужна помощь пожалуйста...
вот ошибка, которую я получаю при попытке перезапустить nginx:
root@s17925268:~# 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 года.
вот что я проверил:
- сертификат и закрытый ключ имеет пробелы.
- Я не использую сервер по умолчанию.ключевой файл.
- I проверил nginx.conf и директивы указывают на правильный закрытый ключ и сертификат.
Я также проверил модуль, и я получаю другой модуль как для ключа, так и для сертификата.
Спасибо за помощь. :)
10 ответов:
Я получил хэш MD5 с разными результатами как для ключа, так и для сертификата.
Это говорит само за себя. У вас есть несоответствие между вашим ключом и сертификатом.
модуль должен соответствовать. Убедитесь, что у вас есть правильный ключ.
после того, как вы установили, что они не совпадают, у вас все еще есть проблема-что с этим делать. Часто сертификат может быть просто собран неправильно. Когда CA подписывает Ваш сертификат, они отправляют вам блок, который выглядит примерно так
-----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.ключ или сервер.ключ) и сделать его копию с помощью дата в названии, как домен.20150306.ключ и т. д. таким образом, они частные и открытые пары ключей вряд ли будут перепутаны с другим набором.
- убедитесь, что ваш сертификат и ключ в формате PEM. Если нет, то преобразуйте их с помощью команды openssl
Проверьте хэш MD5 открытого ключа, чтобы убедиться, что он соответствует тому, что находится в закрытом ключе
сертификат openssl x509-noout-modulus-in.crt / openssl md5
openssl rsa-noout-modulus-in privateKey.ключ / openssl md5
Если это произойдет, и вы используете Let's 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;
посмотреть certbot docs " где мои сертификаты?"
У меня была такая же проблема и, наконец, разрешил ее, изменив порядок блоков pem в файле сертификата.
блок cert должен быть помещен в начало файла, затем промежуточные блоки, затем корневой блок.
Я понял эту проблему, сравнивая проблемный файл сертификата с рабочим файлом сертификата.
у меня была эта проблема, потому что я добавлял пакет и сертификат в неправильном порядке, так что, возможно, это может помочь кому-то еще.
Перед (что неправильно) :
cat ca_bundle.crt certificate.crt > bundle.crt
После (что правильно)
cat certificate.crt ca_bundle.crt > bundle.crt
если сертификат сервера и пакет были объединены в неправильном порядке, nginx откажется запускаться и выдаст ошибку сообщение:
SSL_CTX_use_PrivateKey_file(" ... /www.example.com.key") failed (SSL: error:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch)
в моем случае я хотел изменить сертификат ssl, потому что я изменил свой сервер, поэтому мне пришлось создать новый csr с помощью этой команды:
$openssl req-new-newkey rsa: 2048-nodes-keyout mysite.ключ -из личного сайта.КСО
Я послал 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.КСО
затем я получил новый файл crt от поставщика компании, перезагрузите nginx, и это сработало.
мои 5 центов по этому вопросу:
У меня была такая же проблема. Примерно через 1 час после этого я обнаружил, что неправильно вставил сертификат.
если у вас есть ошибки, как это, пожалуйста, проверьте ваш сертификат.
Это также может произойти, когда ваш CA выдает промежуточный сертификат
я столкнулся с этой проблемой (дважды) с nginx и ни одно из решений в этом посте объяснил проблему. Сообщение в блоге здесь хорошим джентльменом по имени Марко прибил его, и я вставляю его здесь для тех, кто также сталкивается с тем, что я видел. https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff
в моем случае, go-папа был CA и это специфично для того, как они выдают сертификат и промежуточные пакеты сертификатов.
вот отрывок из блога Марко
С помощью Nginx, если ваш ЦС включал промежуточный сертификат, вы должны создать один цепной файл сертификата, содержащий ваш сертификат и промежуточные сертификаты ЦС.
вы можете использовать эту команду для создания комбинированного файл называется пример.ком.заковали.ЭЛТ:
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.ЭЛТ и domain_com.ЦС-пачки файлов скопировать новый файл в домен пасты.ком.заковали.ЭЛТ
3-Добавить файлы nginx: а. ssl_certificate /главная/пользователя/domain_ssl/домен.ком.заковали.ЭЛТ; б. ssl_certificate_key /главная/пользователя/domain_ssl/домен.ком.ключ;
Lates перезапустить Nginx