我设法使用带有 aes256 加密的 ike2 通过 strongSwan VPN 连接了不同区域的两个 AWS 子网。因此,创建了主 CA 密钥、自签名 CA 证书以及两个网关的私钥和公钥。之后,我为 roadwarrior 创建了证书并以 p12 格式将它们导出到 win10 客户端。
这两个 LAN 之间的连接正常,但我无法连接 roadwarrior 客户端。
我将证书导入win10,在认证管理器中正常可见。
然后我使用 Windows10 VPN 客户端创建了 VPN 配置,当我运行它时,我收到了 Windows 消息:
找不到可以用于此可扩展身份验证协议的证书。
检查certmagr
所有东西是否到位。
使用的身份验证方法是 EAP-tls,它在 LAN 到 LAN 模型中运行没有问题。
Win10 VPN安全属性设置为:
Type of the VPN: IKE2 , Data Encryption: Require encryption (disconnect if server declines) Authentication: Use Extensible Authentication Protocol -> Microsoft smart card or other certificates (encryption enabled) -> Properties ---> Use certificate on this computer ---> Verify the server's identity by validating the certificate ---> Trusted Root Certificate authority ----> Both certificates CA and the client p12 certificate are visible and checked
这是ipsec.conf文件
config setup
charondebug="cfg 2, dmn 2, ike 2,net 2"
uniqueids=yes
strictcrlpolicy=no
conn %default
fragmentation=force
forceencaps=yes
rekeymargin=3m
mobike=no
keyingtries=%forever
ike=aes256-sha256-modp2048,aes256-sha2_256-modp1024!
esp=aes256-sh256,aes256-sha2_256!
ikelifetime=1h
lifetime=8h
dpddelay=30
dpdtimeout=120
dpdaction=restart
authby=pubkey
leftcert=vpn-west-public-certificate.pem
leftsendcert=always
keyexchange=ikev2
type=tunnel
leftca="C=DE, O=Orgname, CN=Orgname Root CA"
leftid=13.57.xx.yy
left=10.0.0.208
leftsubnet=10.0.0.0/16
conn roadw
right=%any
rightid=%any
rightauth=eap-tls
rightsourceip=10.0.0.64/28
rightsendcert=never
rightdns=8.8.8.8
eap_identity=%identity
auto=add
这里是IPsec.机密文件
13.57.xx.yy : RSA "/etc/ipsec.d/private/vpn-west-private-key.pem"
username : EAP "passphrase"
CA root 安装在客户端,以及 username.p12。我怀疑双方的 Linux 和 Windows 都有一些调整。
此外,我发现在创建公共服务器证书期间,Windows 要求将主机名或 IP 地址列为 ipsec pki -- 发行者参数的一部分,格式为 --san dns:13.57.xx.yy,并且客户端(Windows)用户证书需要具有 CN=$USER" --san $USER。我添加了这两个参数,但行为仍然没有变化。
我是否需要添加 extKeyUsage,OID 必须是 1.3.6.1.5.5.7.3.2,因为添加它不会改变任何东西。
知道从哪里开始吗?看起来 windows10 甚至没有启动会话,因此在我看来,Win10 上的 VPN 客户端的配置有问题,并且一些参数也应该在 strongSwan 端进行调整。
以下是 CA、服务器和客户端的证书配置命令
根主密钥
ipsec pki --gen --type rsa --size 4096 --outform > root-key-for-ca=signing.pem
根 CA 证书
ipsec pki --self --ca --lifetime 3650 --in root-key-for-ca=signing.pem --type rsa --dn "C=DE, O=Orgname Root CA" --outform pem > signed-root-ca-certificate.pem
客户端私钥
ipsec pki --gen --type rsa --size 2048 --outform pem > win10-client1-key.pem
客户端公共证书
ipsec pki --pub --in win10-client1-key.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert signed-root-ca-certificate.pem --cakey root-key-for-ca-signing.pem --dn "C=DE, O=Orgname, CN=win10-client1" --san "win10-client1" --flag serverAuth --flag clientAuth --flag ikeIntermediate --outform pem > vpn-win10-client1-public-certificate.pem
用于传输客户端个人私钥的P12便携式格式
openssl pkcs12 -export -inkey win10-client1-key.pem -in vpn-win10-client1-public-certificate.pem -name "win10-client1 VPN certificate" -certfile signed-root-ca-certificate.pem -cname "Orgname Root CA" -out win10-client1.p12
私有服务器密钥
ipsec pki --gen --type rsa --size 2048 --outform pem > vpn-west=private-key.pem
公共服务器证书
ipsec pki --pub --in vpn-west-private-key.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert signed-root-ca-certificate.pem --cakey root-key-for-ca-signing.pem --dn "C=DE, O=Orgname, CN=13.57.xx.yy" --san 13.57.xx.yy --san dns:13.57.xx.yy --flag serverAuth --flag ikeIntermediate --outform pem > vpn-west-public-certificate.pem