期望:将 pem 转换为 crt 时受信任的证书

信息安全 openssl
2021-08-22 21:34:35

我正在尝试生成一个私钥-公钥对并将公钥转换为可以添加到我的信任库中的证书。

生成私钥和公钥: openssl rsa -in private.pem -outform PEM -pubout -out public_key.pem

现在我正在尝试将其转换为证书:

openssl x509 -outform der -in  public_key.pem -out  public.cer 

但我收到一个错误:

7962:error:0906D06C:PEM routines:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.30.2/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE

所有教程都表明我必须在添加到信任库之前将 pem 转换为 crt。

2个回答

您不能将公钥“转换”为证书。证书包括公钥,但还包括更多信息,如主题、颁发者、证书何时有效等。证书由颁发者签名。因此,您需要创建一个证书签名请求 (CSR),其中包括公钥但还包括所有附加信息。然后,此 CSR 需要由证书颁发机构 (CA) 签名,然后生成证书。

要创建不受任何浏览器信任的简单自签名证书,请参阅如何使用 openssl 创建自签名证书?.

您不能将公钥转换为证书。

原始命令将不起作用,因为 PEM 编码/文件格式预计包含加密的证书文本,如下所示:

-----开始证书-----

证书数据在这里

-----结束证书-----

因此,如果您查看原始 .PEM 文件并看到其他内容(例如 BEGIN RSA ... ),那么这是不正确的。

现在根据线程标题,您正在寻求将 PEM 转换为 CRT 文件格式请注意,x509 证书可以采用两种编码 - DER 和 PEM。此外,PEM 可以是 .CRT、.CER 和 .PEM 格式。

因此,如果您看到该错误,您也有可能将 DER 编码证书视为 PEM 编码证书。您可以按照此页面中的说明尝试查看它是否实际上是 DER 编码的