Я нашел путь, который, кажется, работает лучше на меня:
ssh-keygen -y -f <private key file>
, что команда произведет открытый ключ для данного закрытого ключа, таким образом просто, сравните вывод с каждым *.pub файлом.
Я всегда сравниваю хеш MD5 модуля с помощью этих команд:
Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5
, Если хеши соответствуют, то те два файла сочетаются.
Для ключей DSA используйте
openssl dsa -pubin -in dsa.pub -modulus -noout
для печати открытых ключей, тогда
openssl dsa -in dsa.key -modulus -noout
для отображения открытых ключей, соответствующих закрытому ключу, затем сравните их.
Принятие Вас имеет открытые ключи внутри x.509 сертификаты и предположение, что они - ключи RSA, затем для каждого открытого ключа, сделайте
openssl x509 -in certfile -modulus -noout
Для каждого закрытого ключа, сделайте
openssl rsa -in keyfile -modulus -noout
, Тогда соответствуют ключам модулем.
Удалите открытые ключи и генерируйте новые от закрытых ключей. Сохраните их в отдельных каталогах или используйте соглашение о присвоении имен сохранить их прямо.
Зашифруйте что-то с открытым ключом и посмотрите, какой закрытый ключ дешифрует его.
Этот статья проекта кода никого другого, чем Jeff Atwood реализует упрощенную обертку вокруг.NET crypto классы. Принятие этих ключей было создано для использования с RSA, использует асимметричный класс с Вашим открытым ключом для шифрования, и то же с закрытым ключом для дешифрования.