У меня есть сертификат OpenSSl. Еще мне нужен закрытый ключ. Мне сказали, что он находится где-то на сервере, и, правда, я нашел несколько файлов ключей SSL.
Прежде чем я попробую их все грубой силой: есть ли способ узнать на терминале, использовался ли закрытый ключ для создания сертификата?
Классическая ссылка на это этот FAQ в онлайн-документации Apache.
В этом документе md5
модуля используется, потому что
Поскольку общедоступная экспонента обычно равна 65537, и визуально проверить, что длинные числа модуля одинаковы, сложно, вы можете использовать следующий подход.
Это дает:
$ openssl rsa -noout -modulus -in key.pem.decrypted | openssl md5
(stdin)= 9fxxfoobar558d9xx0045a89467d2bxx
$ openssl x509 -noout -modulus -in crt.pem | openssl md5
(stdin)= 9fxxfoobar558d9xx0045a89467d2bxx
Я предлагаю использовать замену процесса, чтобы избежать визуального сравнения модуля:
$ diff \
<(openssl x509 -noout -modulus -in cert.pem) \
<(openssl rsa -noout -modulus -in key.pem.decrypted)
Если вывод пуст, закрытый ключ соответствует сертификату.
Это просто более удобный способ сравнить строки, чем тот, что в ответе Эндрю Шульмана, что, конечно, также верно.
Еще одна ссылка Вот.
Чтобы убедиться, что файл сертификата удостоверяет открытый ключ, связанный с данным файлом закрытого ключа, сравните открытые ключи, связанные с каждым:
openssl rsa -in KEYFILE -pubout
openssl x509 -in CERTFILE -pubkey -noout
Сертификат и закрытый ключ совпадают тогда и только тогда, когда открытые ключи идентичны.