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

Я пытаюсь использовать 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.

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

2 ответа

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

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

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

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

openssl rsa -in private.key -noout -text

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам