谁能告诉我从。pem文件中提取/转换证书.crt和私钥.key文件的正确方法/命令?我刚读到它们是可以互换的,但不知道怎么互换。
当前回答
.crt存储证书..pem格式。因此,.pem虽然也可以有其他东西,如csr(证书签名请求)、私钥、公钥或其他cert,但当它只存储一个cert时,它与.crt是一样的。
pem是一个base64编码的文件,每个部分之间有一个页眉和一个页脚。
要提取特定的部分,像下面这样的perl脚本是完全有效的,但是可以随意使用一些openssl命令。
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
其中==1可以更改为您需要的任何部分。显然,如果你确切地知道你需要的页眉和页脚,并且文件中只有其中一个(通常情况下,如果你只保留证书和密钥),你可以简化它:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem
其他回答
如果您之所以问这个问题是因为您正在使用mkcert,那么诀窍在于.pem文件是cert和-key。Pem文件是密钥。
(你不需要转换,只需要运行mkcert yourdomain.dev otherdomain.dev)
.crt存储证书..pem格式。因此,.pem虽然也可以有其他东西,如csr(证书签名请求)、私钥、公钥或其他cert,但当它只存储一个cert时,它与.crt是一样的。
pem是一个base64编码的文件,每个部分之间有一个页眉和一个页脚。
要提取特定的部分,像下面这样的perl脚本是完全有效的,但是可以随意使用一些openssl命令。
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
其中==1可以更改为您需要的任何部分。显然,如果你确切地知道你需要的页眉和页脚,并且文件中只有其中一个(通常情况下,如果你只保留证书和密钥),你可以简化它:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem
先决条件
应该安装Openssl。 在Windows上,如果安装了Git Bash,试试!可以在这里找到替代二进制文件。
步骤1:从。pem中提取。key
openssl pkey -in cert.pem -out cert.key
步骤2:从。pem中提取。crt
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
这是我在窗户上做的。
从谷歌下载一个包含open ssl exe的zip文件 解压zip文件并进入bin文件夹。 进入bin文件夹的地址栏,输入cmd。这将在此文件夹中打开命令提示符。 move/将pem文件放到bin文件夹中。 执行两条命令。一个创建证书,另一个创建密钥文件
openssl x509 -outform der -in yourPemFilename.pem -out certfileOutName.crt
openssl rsa -in yourPemFilename.pem -out keyfileOutName.key
从pem文件中提取密钥和证书。
提取关键
openssl pkey -in foo.pem -out foo.key
另一种提取密钥的方法…
openssl rsa -in foo.pem -out foo.key
提取所有的证书,包括CA链
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
将文本上的第一个证书提取为DER
openssl x509 -in foo.pem -outform DER -out first-cert.der
推荐文章
- 使用请求包时出现SSL InsecurePlatform错误
- BEGIN RSA PRIVATE KEY与BEGIN PRIVATE KEY的区别
- 你从哪里包含jQuery库?谷歌JSAPI吗?CDN吗?
- 没有为Android SSL连接找到信任锚
- 使用.htaccess和mod_rewrite强制SSL/https
- 在Java客户端中接受服务器的自签名ssl证书
- file_get_contents(): SSL operation failed with code 1, failed to enable crypto
- 如何与证书颁发机构签署证书签署请求?
- 签名Windows EXE文件
- bundle安装失败,SSL证书验证错误
- Java HTTPS客户端证书认证
- 将CERT/PEM证书转换为PFX证书
- 当安装rubygems时,SSL错误,无法从https://rubygems.org/获取数据
- 即使导入证书后也无法找到请求目标的有效证书路径-错误
- curl:(35)错误:1408F10B:SSL例程:ssl3_get_record:错误的版本号