Openconnect для Cisco VPN не распознает файл закрытого ключа - процедуры кодирования asn1: ASN1_CHECK_TLEN: неправильный тег

11362
Alexander Skwar

Я пытаюсь использовать NAS-устройство Synology DS212, также выступая в качестве шлюза VPN для VPN моей компании. К сожалению, они используют только Cisco ASA, и чтобы еще больше усложнить задачу, мы должны использовать персональные сертификаты (что, конечно, более безопасно, но сложнее в работе…).

Поэтому я скомпилировал OpenConnect v4.06 с http://www.infradead.org/openconnect/ . В качестве базового теста я попытался создать соединение, вручную вызвав openconnect, передав файлы ключей и сертификаты, например:

/lib/ld-linux.so.3 --library-path /opt/lib \ /opt/openconnect/sbin/openconnect \ --certificate=$VPN_CFG/alexander.crt \ --sslkey=$VPN_CFG/alexander.key \ --cafile=$VPN_CFG/Company_VPN_CA.crt \ --user=alexander --verbose <ip>:443 

Не получается :(

Attempting to connect to <ip>:443 Using certificate file $VPN_CFG/alexander.crt Using client certificate '/CN=alexander@tech.doma.in/OU=Company VPN' 5919:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1315: Loading private key failed (see above errors) Loading certificate failed. Aborting. Failed to open HTTPS connection to <ip> Failed to obtain WebVPN cookie 

Когда я запускаю ту же команду с теми же файлами сертификатов / ключей в окне Ubuntu 12.04, она работает:

openconnect \ --certificate=$VPN_CFG/alexander.crt \ --sslkey=$VPN_CFG/alexander.key \ --cafile=$VPN_CFG/Company_VPN_CA.crt \ --user=alexander --verbose <ip>:443 Attempting to connect to <ip>:443 Using certificate file $VPN_CFG/alexander.crt Extra cert from cafile: '/CN=Company AG VPN CA/O=Company AG/L=Zurich/ST=ZH/C=CH' SSL negotiation with <ip> Server certificate verify failed: self signed certificate  Certificate from VPN server "<ip>" failed verification. Reason: self signed certificate Enter 'yes' to accept, 'no' to abort; anything else to view: yes Connected to HTTPS on <ip> GET https://<ip>/ […] 

Ну ... Ошибка на NAS заключается в следующем:

5919: ошибка: 0D0680A8: процедуры кодирования asn1: ASN1_CHECK_TLEN: неправильный тег: tasn_dec.c: 1315:

Есть идеи, что вызывает это?

В Syno я использую OpenConnect 4.06. В Ubuntu я только что скомпилировал и установил в другое место OpenConnect 4.06.

Спасибо Александр

3
Я, должно быть, сделал несколько ошибок редактирования, когда я манипулировал файлом ключа. Используя openssl для выполнения перебора, все работало нормально: openssl pkcs12 -in alexander.skwar.p12 -nodes -clcerts -nokeys> ClientCert.pem; openssl pkcs12 -in alexander.skwar.p12 -nodes -cacerts -nokeys -out CaCert.pem; openssl pkcs12 -in alexander.skwar.p12 -nodes -nocerts -out Key.pem Alexander Skwar 10 лет назад 0

2 ответа на вопрос

1
tseeling

У меня была та же самая проблема, и я мог решить ее, немного манипулируя файлом PEM с закрытым ключом. Он содержал обычный заголовок и шаблон нижнего колонтитула

"----- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ -----"

"----- КОНЕЦ ЧАСТНОГО КЛЮЧА -----"

Это было совершенно верно для проверки с openssl; Я мог бы получить вменяемый вывод из команды openssl.

openssl rsa -in private.key -noout -text 

Но для openconnect это было недостаточно конкретно.

Я изменил шаблон на

"----- НАЧАТЬ RSA ЧАСТНЫЙ КЛЮЧ -----"

"----- END RSA ЧАСТНЫЙ КЛЮЧ -----"

т.е. я добавил идентификатор "RSA". (конечно без кавычек в файле PEM).

0
Johan Dahlin

Я бы порекомендовал вам сначала попробовать подключиться к сети Cisco AnyConnect через обычный дистрибутив Linux, например, Ubuntu.

$ sudo openconnect http: // $ gateway / полный доступ --script / etc / vpnc / vpnc-script --user $ USERNAME

Это способ входа в систему через openconnect для моей установки AnyConnect.

Вам нужно установить как openconnect, так и vpnc, чтобы это работало.

Похожие вопросы