Я экспортировал существующий сертификат + ключ из ASA 5510:
asa5510(config)# crypto ca export MYTRUSTSTORE pkcs12 MYPASSWORD
Сохраненный вывод в файл (vpn-cisco.pkcs12), и теперь я пытаюсь вытащить сертификат и ключ в отдельные файлы, например:
openssl pkcs12 -in cisco-vpn.pkcs12 -nocerts -out privateKey.pem
Я получаю ошибку:
139708630054816:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
139708630054816:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS12
Та же ошибка, если я бегу openssl pkcs12 -info ...
или любой другой командой.
Я попытался снова экспортировать файл и сравнить, используя ASDM вместо CLI, но файл точно такой же.
Поиск в Google об ошибке только говорит, что кодировка файла может быть каким-то образом отключена, но без конкретных деталей.
Это странно. У меня такая же проблема, и на этот вопрос нет ответа. Затем я продолжил поиск и нашел yaleman.org сообщение, в котором говорится, что они нашли ответ и связаны с этот самый вопрос. Но ответа здесь не было. Задним числом исправляя это, полный реквизит yaleman.
Вкратце: вам нужно преобразовать pfx из Base64 в двоичный формат openssl.
$ openssl enc -base64 -d -in certfile.pfx -out converted.pfx
Затем вы можете преобразовать его в PEM и получить ключ или сертификат отдельно.
$ openssl pkcs12 -in converted.pfx -out bundle.pem -clcerts -nodes
Если у вас возникли проблемы с декодированием, проверьте свой файл и удалите в нем все пустые строки. Наш ASA сохранял их с начальными пробелами, а openssl это не нравится.