连接成功后是否有存储服务器密钥的方法, ssh的方式呢?
无论连接多少次,我都必须始终输入“是” 接受服务器密钥。我希望它能被永远接受和存储。
###############################
amir@amirpc:~$ sudo openconnect uk.cisadd.com -u myusername
POST https://uk.cisadd.com/
Attempting to connect to server xxx.xxx.xxx.xxx:443
SSL negotiation with uk.cisadd.com
Server certificate verify failed: signer not found
Certificate from VPN server "uk.cisadd.com" failed verification.
Reason: signer not found
Enter 'yes' to accept, 'no' to abort; anything else to view:
Connected to HTTPS on XXX.XXX.XXX.XXX
###############################
可以编写bash脚本来运行openconnect并转义是吗?
答案 0 :(得分:7)
我敢打赌,您可以使用选项window.location.href=new_url
或拥有有效的SSL证书来执行此操作:
--no-cert-check
答案 1 :(得分:5)
最好的方法是第一次登录服务器时将--servercert保存在这样的剪贴板中
echo "password" | sudo openconnect -u username uk2.cisadd.com --servercert sha25:xxxxxxx
答案 2 :(得分:3)
如果您不在乎解密您的流量,则可以使用--no-cert-check
。否则使用--servercert=FINGERPRINT
,其中FINGERPRINT是"服务器密钥哈希"如证书信息中所示。
答案 3 :(得分:1)
我在OpenWRT上遇到了同样的问题,我的解决方案是安装'ca-certificates'软件包。
# opkg install ca-certificates
一旦我这样做,openconnect就会停止标记'未找到签名者'。
此解决方案的好处是您使用的是预期的证书,并限制了您破坏网络的机会。
答案 4 :(得分:0)
openconnect 7.0.6 版 以后不再有 --no-cert-check
选项。
就这样,我做了下面的过程,作为shell脚本绕过了这个问题:
首先,您需要服务器认证,您可以通过以下方式找到:
echo <password> | sudo openconnect <hostname> --user=<username> --passwd-on-stdin --no-dtls
然后你必须像这样从预期的输出中找到 --servercert
值:
...
SSL negotiation with xxxxxxx
Server certificate verify failed: signer not found
Certificate from VPN server "xxxxxxx" failed verification.
Reason: signer not found
To trust this server in future, perhaps add this to your command line:
--servercert pin-sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <--- Here it is
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress
最后,复制认证代码后,您可以编写如下 bash 脚本:
echo <password> | sudo openconnect <hostname> --user=<username> --passwd-on-stdin --no-dtls --servercert pin-sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx