生成并导出证书 - Linux - OpenSSL
本文介绍如何使用 OpenSSL 创建自签名根证书和生成客户端证书 .pem 文件。 如果需要 .pfx 和 .cer 文件,请参阅 Windows-PowerShell 说明。
先决条件
若要使用本文,必须拥有运行 OpenSSL 的计算机。
自签名根证书
本部分介绍如何生成自签名根证书。 生成证书后,导出根证书公钥数据文件。
可参考以下示例生成自签名根证书。
openssl genrsa -out caKey.pem 2048 openssl req -x509 -new -nodes -key caKey.pem -subj "/CN=VPN CA" -days 3650 -out caCert.pem
以 base64 格式打印自签名根证书公共数据。 这是 Azure 支持的格式。 按照 P2S 配置步骤,将此证书上传到 Azure。
openssl x509 -in caCert.pem -outform der | base64 -w0 && echo
客户端证书
在本部分中,你将生成用户证书(客户端证书)。 证书文件在运行命令的本地目录中生成。 可以在每台客户端计算机上使用相同的客户端证书,或生成特定于每个客户端的证书。 客户端证书必须由根证书签名。
若要生成客户端证书,请参考以下示例。
export PASSWORD="password" export USERNAME=$(hostnamectl --static) # Generate a private key openssl genrsa -out "${USERNAME}Key.pem" 2048 # Generate a CSR (Certificate Sign Request) openssl req -new -key "${USERNAME}Key.pem" -out "${USERNAME}Req.pem" -subj "/CN=${USERNAME}" # Sign the CSR using the CA certificate and CA key openssl x509 -req -days 365 -in "${USERNAME}Req.pem" -CA caCert.pem -CAkey caKey.pem -CAcreateserial -out "${USERNAME}Cert.pem" -extfile <(echo -e "subjectAltName=DNS:${USERNAME}\nextendedKeyUsage=clientAuth")
若要验证客户端证书,请参考以下示例。
openssl verify -CAfile caCert.pem caCert.pem "${USERNAME}Cert.pem"
后续步骤
若要继续配置步骤,请参阅点到站点证书身份验证。