OPENSSL 制作 Ikev2证书

文章目录

OPENSSL 制作 Ikev2证书

在一个 VPS 上配置 IKEV2 VPN 服务器时,用 OPENSSL 制作了所需的数字证书,奇怪的怎么弄都无法连接服务器,一直提示 “IKE_SA 链接超时” 。最后实在没辙了,怀疑到是不是证书有问题,因为平时都是用 ipsec pki 生成证书的。于是按照网上的教程用 ipsec pki 制作证书,结果很顺利的登入服务器。

一、

仔细对比了 ipsec pki 和 OPENSSL 签发的证书,区别还是有的
  1. 在证书的常规项里面,ipsec pki 的证书明确指出 “保证远程计算机的身份” 和 “允许 Internet 上的安全通信”

2. 在证书扩展项里面,ipsec pki 的证书指出用于 “服务器身份验证” 和 “IP 安全 IKE 中级” ,同时使用了 “使用者可选名称”,内容为 DNS Name

 

 

二、

再对比了制作证书的指令
  1. 在建立根证书的时两者基本差别不大
  2. 在签发证书时,ipsec pki 使用了 san 扩展和几个 flag
ipsec pki 签发 server 证书
ipsec pki --gen --type rsa --size 4096 --outform pem > vpnkey.pem
ipsec pki --pub --in vpnkey.pem --type rsa | ipsec pki --issue --lifetime 1825 --cacert ca.pem --cakey cakey.pem \
--dn "C=US, O=VPN Server, CN=vpn-do.yourshell.info" \
--san vpn-do.yourshell.info --flag serverAuth --flag ikeIntermediate \
--outform pem > vpn.pem

Ikev2证书 需要支持 IKE 协议(因特网密钥交换协议) ,同时支持“使用者可选名称“(SAN 扩展,多域名证书)以提高设备的兼容性

三、

在谷歌上搜索一番,修改 openssl.cnf 如下

在 [ new_oids ] 配置段中加入

ikeIntermediate = 1.3.6.1.5.5.8.2.2

在 [ req ] 配置段中加入

utf8 = yes

修改 [ usr_cert ] 配置段
basicConstraints=CA:true
nsCertType = server, client, email, objsign
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth,clientAuth,codeSigning,emailProtection, ikeIntermediate

修改 [ v3_req ] 配置段

# Extensions to add to a certificate request
extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection, ikeIntermediate
basicConstraints = CA:true
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]

DNS.1 = 域名1
DNS.2 = 域名2

四、

最后在 签发证书的时,使用 -extensions v3_req 参数

openssl ca -extensions v3_req -in user_csr.pem -out user_cert.crt -days 3650

参考地址

OpenSSL SAN 证书 http://liaoph.com/openssl-san/

SSLConfig http://wiki.cacert.org/Roots/OpenSSLConfig

原文链接:,转发请注明来源!

发表评论