生成并导出证书 - Linux (strongSwan)

VPN 网关(点到站点)连接可使用证书进行身份验证。 本文说明如何使用 strongSwan 创建自签名根证书以及生成客户端证书。 也可以使用 PowerShellMakeCert

每个客户端必须在本地安装一个客户端证书才能连接。 此外,必须将根证书公钥信息上传到 Azure。 有关详细信息,请参阅点到站点配置 - 证书身份验证

安装 strongSwan

以下步骤可帮助你安装 strongSwan。

指定命令时使用了以下配置:

  • 计算机:Ubuntu Server 18.04
  • 依赖项:strongSwan

使用以下命令安装所需的 strongSwan 配置:

sudo apt-get update
sudo apt-get upgrade
sudo apt install strongswan
sudo apt install strongswan-pki
sudo apt install libstrongswan-extra-plugins
sudo apt install libtss2-tcti-tabrmd0

(strongSwan) 的 Linux CLI 说明

以下步骤可帮助你使用 Linux CLI (strongSwan) 生成和导出证书。 有关详细信息,请参阅安装 Azure CLI 的其他说明

生成 CA 证书。

ipsec pki --gen --outform pem > caKey.pem
ipsec pki --self --in caKey.pem --dn "CN=VPN CA" --ca --outform pem > caCert.pem

打印 base64 格式的 CA 证书。 这是 Azure 支持的格式。 按照 P2S 配置步骤,将此证书上传到 Azure。

openssl x509 -in caCert.pem -outform der | base64 -w0 ; echo

生成用户证书。

export PASSWORD="password"
export USERNAME=$(hostnamectl --static)

ipsec pki --gen --outform pem > "${USERNAME}Key.pem"
ipsec pki --pub --in "${USERNAME}Key.pem" | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "CN=${USERNAME}" --san "${USERNAME}" --flag clientAuth --outform pem > "${USERNAME}Cert.pem"

生成包含用户证书的 p12 捆绑包。 在后续步骤中使用客户端配置文件时将使用此捆绑包。

openssl pkcs12 -in "${USERNAME}Cert.pem" -inkey "${USERNAME}Key.pem" -certfile caCert.pem -export -out "${USERNAME}.p12" -password "pass:${PASSWORD}"

后续步骤

继续进行点到站点配置以创建和安装 VPN 客户端配置文件 - Linux