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> 

 

Комментарии

Популярные сообщения из этого блога

Статические маршруты и петли маршрутизации

Двухфакторная аутентификация на VPN шлюзах для всех

Определение состояния пользователя в AD - заблокирован/выключен