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”[重复]的主要内容,如果未能解决你的问题,请参考以下文章