我正在尝试使用我的Synology DS212NAS 盒还充当我公司 VPN 的 VPN 网关。遗憾的是,它们只使用思科 ASA而更复杂的是,我们必须使用个人证书(这当然更安全,但开始起来更复杂……)。
所以我编译了 OpenConnect v4.06http://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 '/[email protected]/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 到自定义位置。
谢谢,亚历山大
答案1
我遇到了同样的问题,我可以通过稍微操作私钥 PEM 文件来解决这个问题。它包含常见的页眉和页脚样板
“-----开始私钥-----”
“-----结束私钥-----”
这对于使用 openssl 进行验证完全有效;我可以从 openssl 命令获得合理的输出。
openssl rsa -in private.key -noout -text
但对于 openconnect 来说,它还不够具体。
我把样板改成了
“-----开始 RSA 私钥-----”
“-----结束RSA私钥-----”
即我添加了“RSA”标识符。(当然,PEM 文件中没有引号)。
答案2
我建议您首先尝试通过普通 Linux 发行版(例如 Ubuntu)连接到您的 Cisco AnyConnect 网络。
$ sudo openconnect http://$gateway/Full-Access --script /etc/vpnc/vpnc-script --user $USERNAME
这是我如何通过 openconnect 登录到我的 AnyConnect 安装。
您需要同时安装 openconnect 和 vpnc 才能使其正常工作。