openssl для сетевого администратора
Часто что-то надо сделать с сертификатами но поскольку это не каждый день то ключи openssl забываются, тут немного полезных команд:
Проверить соответствие закрытого ключа и сертификата (у них у обоих общий модуль (это то огромное число, разложив которое на его простые множители, можно сразу вычислить секретную экспоненту и получить закрытый ключ, благо для ключей 2048 бит это вроде как пока невозможно (эта операция называется факторизация)).
Ну а сравнивать проще по хэшу модуля:
openssl rsa -noout -modulus -in <фай с ключом> | openssl md5
openssl x509 -noout -modulus -in <фай с сертификатом> | openssl md5
Теперь представим что вам нужно разобрать сертификат и закрытый ключ в одном PKCS12 формате (обычно это файл с расширением PFX) на сертификат и закрытый ключ
Тут стоит сделать замечание:
Данные сертификатов хранятся в формате ASN.1 а именно его варианта кодирования DER.
Однако довольно часто нужен формат который можно представить в виде текста, поэтому можно закодировать данные в Base64 - получится сертификат в формате PEM.
теперь ближе к делу:
извлечение закрытого ключа:
openssl pkcs12 -in <файл pfx> -nocerts -out <имя файла с закрытым ключем> -out <имя файла с сертификатом>
потребуется ввести пароль на pfx и потом пароль на ключ.
Либо же сразу добавить два ключа:
-passin pass:<и тут пароль на pfx>
-passout pass:<и тут пароль на экспортируемый закрытый ключ>
если в пароле есть какие то спецсимволы, заключите его в кавычки ""
Можно расшифровать закрытый ключ и сохранить его не зашифрованным:
openssl rsa -in <имя файла с зашифрованным ключом> -out <имя файла с расшифрованным ключом> -passin pass:<пароль на зашифрованный ключ>
Теперь извлечем из PFX файла только сертификат:
openssl pkcs12 -in <файл pfx> -clcerts -nokeys -out <файл с сертификатом>
Ну а пароль точно так же можно либо ввести интерактивно, либо использовать ключ -passin.
Можно как указано в начале статьи, проверить что ключ и сертификат имеют один и тот же модуль.
Ну а теперь можно собрать обратно ключ с сертификатом в PKCS12 (PFX) файл:
openssl pkcs12 -export -in <имя файла с сертификатом> -inkey <имя файла с закрытым ключем> -out <имя файла PFX> -passout pass:<пароль на файл PFX>
Теперь можно сохранить полученный файл в BASE64 формате:
openssl base64 -in <имя файла PFX> -out <имя файла в формате PFX>
Комментарии
Отправить комментарий