配置IPSec需要建立 PKI,PKI(公钥基础结构)包括服务器与各个客户端的私钥和证书(公钥)、对服务器和各个客户端证书签名的 CA 证书与密钥(CA 证书与密钥来自根证书颁发机构)。
支持基于证书的双向身份验证.这意味着客户端必须对服务器证书进行身份验证,并且服务器必须在建立相互信任之前对客户端证书进行身份验证。
pki --gen --type sm2 --outform pem > ca.key.pem
pki --self --in ca.key.pem --type sm2 --digest sm3 --dn "C=cn, O=demo, CN=VPN CA" \
--ca --lifetime 3650 --outform pem > ca.cert.pem
在CA主机上完成:
生成后, CA需要将ca.cert.pem分发给服务器和客户端。
pki --gen --type sm2 --outform pem > server.key.pem
pki --pub --type sm2 --in server.key.pem --outform pem > server.pub.key.pem
pki --req --in server.key.pem --type sm2 --dn "C=cn, O=demo, CN=VPN Server" \
--digest sm3 --outform pem > server.req.pem
在服务器上完成:
服务器将server.req.pem发送给CA进行签名。
pki --issue --in server.req.pem --type pkcs10 --digest sm3 --lifetime 1200 \
--cacert ca.cert.pem --cakey ca.key.pem --flag serverAuth \
--flag ikeIntermediate --san="172.16.0.75" \
--outform pem > server.cert.pem
在CA主机上完成:
CA将生成的server.cert.pem发送回服务器。
pki --gen --type sm2 --outform pem > client.key.pem
pki --pub --type sm2 --in client.key.pem --outform pem > client.pub.key.pem
pki --req --in client.key.pem --type sm2 --dn "C=cn, O=demo, CN=VPN Client" \
--digest sm3 --outform pem > client.req.pem
在客户端设备上完成:
客户端将client.req.pem发送给CA进行签名。
pki --issue --in client.req.pem --type pkcs10 --digest sm3 --lifetime 1200 \
--cacert ca.cert.pem --cakey ca.key.pem --san="172.16.0.91" \
--outform pem > client.cert.pem
在CA主机上完成:
CA将生成的client.cert.pem发送回客户端。
分发过程:
安全注意事项: