我在配置 strongswan 以连接到我的办公室网络时遇到了一些困难,因为它拒绝以任何方式验证右侧,我想知道是否有人知道如何告诉 strongswan 忽略服务器证书并完成连接?或者是否有办法下载右侧证书,以便我至少可以使用 rightcert 强制它识别右侧。
不幸的是,我无法访问我所连接的服务器的配置(/如果没有 pita 就无法更改它),但这是我在没有获得配置访问权限的情况下可以讲述的内容,而且网络管理员只支持 Windows,所以当我问这个问题时,我几乎是靠自己。
- VPN 服务器软件在防火墙上运行,该防火墙使用的是 Smoothwall 的旧版本
- VPN 服务器是 Openswan 2.6.38
- 它没有默认的本地证书设置,因此似乎只选择生成的第一个客户端证书,然后在下面的“收到的最终实体证书”行中将其吐出
- 所有证书均由同一 CA 生成
以下是来自 strongswan 日志的相关错误
16[ENC] received unknown vendor ID: 49:4b:45:76:32
16[IKE] received end entity cert "<some cert with no fqn or ip in the cn>" #for example C=AB, ST=CD, L=CD, O=Example Org, OU=IT, CN=made_up_thing, [email protected]
16[IKE] no trusted RSA public key found for '<server ip>'
以下是我的 ipsec.conf 的内容,其中删除了 ip 和证书值
config setup
charondebug="ike 2, cfg 2, enc 2"
conn %default
ikelifetime=480m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
ike=3des-sha1-modp1024,3des-sha1-modp2048,aes128-sha1-modp1024,aes256-sha1-modp1024,aes128-sha1-modp2048,aes256-sha1-modp2048
#ike=3des-md5;modp1024,aes-sha1;modp1536,aes-sha1;modp1024
conn office
left=%any
leftcert=/etc/vpn.crt
leftid="CN=client blah, O=org, ST=uk, ..." #actual value match dn from /etc/vpn.crt
leftauth=pubkey
leftfirewall=yes
right=<server ip>
rightsubnet=192.168.3.0/24
rightca="CN=ca blah, O=org, ST=uk, ..." #actual value match dn from /etc/ipsec.d/cacerts/ca.pem
auto=add
据我阅读后了解https://wiki.strongswan.org/issues/940strongswan 应该检查右侧证书是否由同一个 CA 签名并继续进行,但我怀疑,由于 rightid 与证书不匹配,它只是举手拒绝,但也可能是 openswan 没有发送 CA 证书,因为我在日志中没有看到“发送颁发者证书”,尽管我有 CA 证书的副本,但我认为这不会引起任何问题。
更新 1:
按照建议尝试,rightid=%any
我在日志中看到的结果与没有它的结果相同no trusted RSA public key found for '<server ip>'
如果我将值更改为日志中的 cn 值(在上面的示例中为“made_up_thing”),它仍然会失败,但日志显示11[IKE] IDir '<server ip>' does not match to 'made_up_thing'
答案1
你的问题是你没有指定右标识,在这种情况下,它默认为远程 IP 地址。由于该地址通常不包含在证书中的 subjectAltName 中,因此身份验证将失败并出现您看到的错误。
修复此设置右标识远程证书的完整主题 DN 或其 subjectAltName 之一(如果包含)。如果您迫切需要,您可以设置rightid=%任意因此任何拥有可接受证书的对等方都可以进行身份验证。