OpenSSL x509 实用程序 PEM 到 DER 的转换失败,并显示“PEM_read_bio:no start line”[重复]

Posted

技术标签:

【中文标题】OpenSSL x509 实用程序 PEM 到 DER 的转换失败,并显示“PEM_read_bio:no start line”[重复]【英文标题】:OpenSSL x509 utility PEM to DER conversion fails with "PEM_read_bio:no start line" [duplicate] 【发布时间】:2017-02-24 01:31:51 【问题描述】:

尝试使用以下命令将 .pem 文件转换为 .der 文件。

openssl x509 -in public_key.pem -out cert.der -outform DER

遇到错误

unable to load certificate
31833:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSS
L098/OpenSSL098-52.30.1/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFIC
ATE

我已经使用下面生成了 RSA 私钥/公钥。

openssl genrsa -out private_key.pem 2048
openssl rsa -pubout -in private_key.pem -out public_key.pem

【问题讨论】:

您生成的是 RSA 密钥对,而不是证书。每个证书都包含一个公钥,您可以使用 RSA 密钥创建证书... @Robert 你能指导一下,怎么做? 根据答案和欺骗,您可能需要证书。但是如果你真的想要一个只有公钥的文件,它实际上只能用于 OpenSSL 和一些 Java 程序(那些使用X509EncodedKeySpec 显式处理密钥的程序),请执行openssl rsa,pkey -pubin -in public.pem -out public.der -outform der 或首先执行openssl rsa,pkey -in private.pem -pubout -out public.der -outform der . 【参考方案1】:

您正在创建一个 RSA 密钥对。您正在尝试将公钥转换为 DER 格式。

openssl x509 命令需要 X.509 容器内的公钥。

试试这个命令来创建私钥和公共证书。

    创建自签名 CA 证书:

    openssl genrsa  -out CAkey.pem 2048

    openssl req -new -x509 -key CAkey.pem -out cacert.pem -days 1095

    现在创建另一个由上面创建的 CA 签名的证书

    openssl genrsa -out serverkey.pem 2048

    openssl req -new -key serverkey.pem -out server.csr

    openssl x509 -req -days 1000 -in server.csr -CA cacert.pem -CAkey CAkey.pem -out server.pem -set_serial 01

稍后将 PEM 中的公共证书转换为 DER 格式。

openssl x509 -in server.pem -out server.der -outform DER

【讨论】:

如果您所做的唯一事情如上所示,则证书可能不会格式正确。 @jww,我已经编辑了答案,增加了更多相关性。我想了解您的评论。您能否详细说明为什么证书格式不正确?

以上是关于OpenSSL x509 实用程序 PEM 到 DER 的转换失败,并显示“PEM_read_bio:no start line”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

openssl 怎样生成公钥和密钥 x509格式

如何创建一个自签名的SSL证书(X509)

使用 openssl 对文件进行数字签名

联盟链系列 - 用Openssl管理CRL

联盟链系列 - 用Openssl管理CRL

在 Java 中生成 X509Certificate 的主题哈希