Как узнать, был ли сертификат OpenSSL создан определенным закрытым ключом?

Вы изучили это?

7
задан 12 May 2014 в 11:41
2 ответа

Классическая ссылка на это этот 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)

Если вывод пуст, закрытый ключ соответствует сертификату.

Это просто более удобный способ сравнения строк, чем в ответе Эндрю Шульмана, который является конечно, тоже действителен.

Другая ссылка здесь .

9
ответ дан 2 December 2019 в 23:20

Чтобы проверить, что файл сертификата удостоверяет открытый ключ, связанный с данным файлом закрытого ключа, сравните открытые ключи, связанные с каждым из них:

openssl rsa -in KEYFILE -pubout
openssl x509 -in CERTFILE -pubkey -noout

Сертификат и закрытый ключ совпадают тогда и только тогда, когда открытые ключи идентичны.

7
ответ дан 2 December 2019 в 23:20

Теги

Похожие вопросы