ПРОБЛЕМА:
Для подписания и проверки подписи запросов авторизации и полезной нагрузки необходимо использовать отдельные файлы открытых и закрытых ключей. Однако, путём экспорта из локального хранилища сертификатов, можно получить контейнер формата PKCS #12 (файл .pfx) содержащий одновременно и открытый и закрытый ключ.
РЕШЕНИЕ:
Следуя предложенному ниже алгоритму экспортировать ключи в pfx-контейнер, извлечь открытый и закрытый ключи из контейнера и отключить парольную фразу закрытого ключа.
Для выполнения следующих шагов требуется утилита openssl. В Linux и MacOS она присутствует по умолчанию. В ОС Windows можно использовать WSL, либо установить Git для Windows. Openssl будет доступна в терминале Git Bash.
openssl pkcs12 -in file_name.pfx -clcerts -nokeys -out file_name.pem
openssl pkcs12 -in file_name.pfx -nocerts -out file_name.private.key
openssl rsa -in file_name.private.key -out file_name.key
file_name.pem
- открытый ключ;
file_name.private.key
- закрытый ключ, защищенный парольной фразой
file_name.key
- закрытый ключ, без парольной фразы
Для ускорения процесса извлечения ключей можно использовать скрипт примерно следующего содержания (при запуске скрипта в качестве параметра передаётся имя файла .pfx):
#!/bin/bash
openssl pkcs12 -in $1.pfx -clcerts -nokeys -out $1.pem
openssl pkcs12 -in $1.pfx -nocerts -out $1.private.key
openssl rsa -in $1.private.key -out $1.key
rm -f $1.private.key
openssl x509 -noout -serial -in $1.pem