Openvpn:根据现有证书颁发机构生成客户端证书

Openvpn:根据现有证书颁发机构生成客户端证书

我的公司使用 OpenVPN 将客户端连接到中央服务器,以便于管理。我们的防火墙软件(以及他们的防火墙软件)内置了对 OpenVPN 的支持,并包含一个证书生成器。最近,这个生成器停止工作了,我们不知道原因。但是过去这很困难,所以我们想尝试一种新方法。

我们只想在本地计算机上使用 OpenVPN 生成客户端证书,而不是在防火墙软件上生成,因为它似乎有缺陷。我们有一个现有的证书颁发机构,我有完整的可读纯文本证书。这显然包括所有颁发者信息、模数、签名和证书本身。

那么我的问题是,我可以在基于 Debian 的 Linux 发行版上使用 OpenVPN 从现有证书颁发机构生成客户端证书吗?我可以重新生成并签署新的 CA,但我宁愿不这样做,因为我们有相当多的客户端,更新他们的 VPN 客户端证书会很麻烦。

我尝试使用 OpenVPN 生成 CA,并将证书数据更改为我需要的证书数据,但 OpenVPN 生成的格式似乎与我的格式略有不同。

CA 和客户端都是 PKCS12。这可能吗?还是我必须重新制作所有内容?

答案1

当然,为什么不呢?

  • 将 CA 转换为 PEM:
openssl pkcs12 -in ca.pfx -out ca.crt -clcerts -nokeys
openssl pkcs12 -in ca.pfx -out ca.key -nocerts -nodes
  • 生成 4096 位 RSA 密钥及其 CSR(证书签名请求):
openssl genrsa -out 客户端.key 4096
openssl req -sha256 -out client.csr -key client.key -new
  • 使用 CA 密钥签名:
openssl x509 -sha256 -req -days 365 -CA ca.crt -CAkey ca.key \
    -输入客户端.csr-set_serial 01-输出客户端.crt
  • 将客户端密钥/证书转换为 PKCS12:
openssl pkcs12 -export -in 客户端.crt -inkey 客户端.key -out 客户端.pfx

答案2

需要注意的是:如果您希望该客户端证书对 Azure 有用,则需要在证书中提供 extendedKeyUsage=clientAuth 扩展。如果没有该扩展,日志中将不会显示任何错误,而 Azure 只会在进行一些密钥检查后断开连接。

https://stackoverflow.com/questions/17089889/openssl-x509v3-extended-key-usage获得一些将其添加到证书的指针。

相关内容