P12 证书认证-正确的方法是什么

P12 证书认证-正确的方法是什么

我已经能够使用证书身份验证成功设置 IKEv2/IPSec VPN 服务器。但是,我对创建 P12 用户证书的正确方法存在一般性问题。

我一直在使用以下方法:

ipsec pki --gen --outform pem > test.client.pem
ipsec pki --pub --in test.client.pem | ipsec pki --issue --cacert cacerts/ca.cert.pem --cakey private/ca.pem --dn "C=UK, O=Test Organisation, CN=Test User" --outform pem > certs/test.client.cert.pem
openssl pkcs12 -export -inkey test.client.pem -in certs/test.client.cert.pem -name "Test User" -certfile cacerts/ca.cert.pem -caname "Test User VPN Certificate" -out p12/test.client.cert.p12

当我将 test.client.cert.p12 插入我的 Android 设备时,证书有效。但是,当我尝试在 Linux 中查看证书时,它显示文件已损坏。因此:查看 P12 证书

此外,当我尝试将 P12 证书添加到 Apple Mac 上的 Keystore Access 应用程序时,它无法识别分配给该证书的密码。

但是(这也是有趣的地方),当我将 test.client.cert.p12 导入到我的 Brave 浏览器时,在提示输入密码后,它允许添加证书。以下是示例:将证书导入 Brave

然后,当我将证书文件导出到文件(指定并确认密码)时,新的 P12 证书在所有情况下都有效。因此:工作 P12 证书

这让我回想起代码:上面的代码中我遗漏了什么,导致 P12 客户端证书变得不可读(Android 除外)?我不想每次生成新证书时都必须通过浏览器导入和导出 P12 证书。

答案1

PKCS12 [ ] 证书的问题似乎.p12与遗留的加密算法有关:

-legacy通过在导出命令中使用,.p12将使用旧的 OpenSSL v1.1 加密算法,而不是默认的 v3.x,然后.p12将在所有场景中打开/导入:

openssl pkcs12 -export -legacy -inkey "test.client.pem" -in "certs/test.client.cert.pem" -name "Test User" -certfile "cacerts/ca.cert.pem" -caname "Test User VPN Certificate" -out "p12/test.client.cert.p12"

相关内容