如何将.pem转换为.crt和.key
如何将.pem转换为.crt和.key?
摘自: https://vimsky.com/article/3608.html
.pem转换的问题描述
从.pem
文件中提取/转换证书.crt
和私钥.key
文件的正确方法或者命令是什么?我知道它们是可转换的,但是不清楚怎么做。
最佳解决方法
可以使用以下方式将pem转换为crt:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
可行的解决方法整理
使用OpenSSL进行转换
以下命令允许将证书和密钥转换为不同的格式,使其与特定类型的服务器或软件兼容。
将DER文件(.crt .cer .der)转换为PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
将PEM文件转换为DER
openssl x509 -outform der -in certificate.pem -out certificate.der
将包含私钥和证书的PKCS#12文件(.pfx .p12)转换为PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
将PEM证书文件和私钥转换为PKCS#12(.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
将PEM转换为CRT(.CRT文件)
openssl x509 -outform der -in certificate.pem -out certificate.crt
OpenSSL转换PEM
将PEM转换为DER
openssl x509 -outform der -in certificate.pem -out certificate.der
将PEM转换为P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
将PEM转换为PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL转换DER
将DER转换为PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL转换P7B
将P7B转换为PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
将P7B转换为PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL转换PFX
将PFX转换为PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
通过OpenSSL生成rsa密钥
在命令行上使用OpenSSL,首先需要生成公钥和私钥,应该使用-passout参数密码保护此文件,该参数可以采用许多不同的形式,可以请参阅OpenSSL文档。
openssl genrsa -out private.pem
这将创建一个名为private.pem的密钥文件,该文件使用1024位(bits)。该文件实际上同时具有私钥和公钥,可以从该文件中提取公共密钥:
openssl rsa -in private.pem -out public.pem -outform PEM -pubout or openssl rsa -in private.pem -pubout > public.pem or openssl rsa -in private.pem -pubout -out public.pem
现在你的
public.pem
只包含公钥,可以和第三方自由地分享。可以通过使用公钥加密自己的东西然后使用私钥进行解密来测试,首先我们需要一些数据做加密:示例文件:
echo 'too many secrets' > file.txt
现在在file.txt中有一些数据,可以使用OpenSSL和公钥进行加密:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
这将创建一个加密版本的file.txt,命令这个文件为file.ssl(如果直接打开这个文件查看那么它看起来只是二进制垃圾,人类无法看懂)。然后可以使用私钥解密它:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
现在在decryptpted.txt中有一个未加密的文件:
cat decrypted.txt |output -> too many secrets
OpenSSL中的RSA工具选项
名称:
rsa - RSA密钥处理工具
概要:
openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-aes128] [ -aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin ] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]
说明:
rsa命令处理RSA密钥。它们可以在各种形式之间进行转换,并将其组件打印出来。注意,此命令使用传统的SSLeay兼容格式进行私钥加密:较新的应用程序应使用pkcs8实用程序使用更安全的PKCS#8格式。命令选项:
-help
打印出使用信息。
-inform DER|NET|PEM
指定输入格式。 DER选项使用与
PKCS#1 RSAPrivateKey
或SubjectPublicKeyInfo
格式兼容的ASN1 DER编码格式。 PEM格式是默认格式:它由DER格式base64编码,带有附加的页眉和页脚行。在输入PKCS#8格式的私钥也被接受。 NET格式是在NOTES部分中描述的格式。-outform DER|NET|PEM
指定输出格式,选项与-inform选项的含义相同。
-in filename
如果未指定此选项,则指定从或从标准输入读取密钥的输入文件名。如果密钥加密,将提示输入密码。
-passin arg
输入文件的密码来源。有关arg的格式的更多信息,参阅openssl中的
PASS PHRASE ARGUMENTS
部分。-out filename
如果未指定此选项,则指定将密钥写入或输出的输出文件名。如果设置了任何加密选项,则会提示输入密码。输出文件名不能与输入文件名相同。
-passout password
输出文件密码来源。有关arg的格式的更多信息,参阅openssl中的
PASS PHRASE ARGUMENTS
部分。-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
这些选项在输出之前用指定的密码加密私钥。会有同通行提示信息。如果没有指定这些选项,则key以纯文本形式写入。这些选项只能用于PEM格式的输出文件。
-text
除了编码版本之外,以纯文本形式打印各种公共或私人密钥组件。
-noout
此选项可防止输出密钥的编码版本。
-modulus
此选项打印出该键的取模数值。
-check
此选项将检查RSA私钥的一致性。
-pubin
默认情况下,从输入文件读取私钥:使用此选项读取公钥。
-pubout
默认情况下会输出一个私钥:使用此选项将会输出一个公钥。如果输入是公钥,则会自动设置此选项。
-RSAPublicKey_in, -RSAPublicKey_out
像-pubin和-pubout一样,除了使用RSAPublicKey格式的情形。
-engine id
指定一个引擎(通过其获得唯一的id字符串)将导致rsa尝试获得对特定引擎功能的引用,从而在需要时进行初始化。然后,引擎将被设置为所有可用算法的默认值。
笔记
PEM私钥格式使用以下页眉和页脚行:
-----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----
PEM公钥格式使用以下页眉和页脚行:
-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----
PEM RSAPublicKey格式使用以下页眉和页脚线:
-----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY-----
NET格式是与旧的Netscape服务器和Microsoft IIS .key文件兼容的格式,它使用未加密的RC4进行加密。这种方法不是很安全,所以只能在必要时使用。一些较新版本的IIS在导出的.key文件中有其他额外的数据。要使用这些实用程序,请使用二进制编辑器查看文件,并查找字符串"private-key",然后追溯到字节序列0x30,0x82(这是一个
ASN1 SEQUENCE
)。将所有数据从此点复制到另一个文件,并将其用作带有-inform NET选项的rsa实用程序的输入。例子
要删除RSA私钥上的密码短语:
openssl rsa -in key.pem -out keyout.pem
使用三重DES加密私钥:
openssl rsa -in key.pem -des3 -out keyout.pem
将私钥从PEM转换为DER格式:
openssl rsa -in key.pem -outform DER -out keyout.der
将私钥的组件输出到标准输出:
openssl rsa -in key.pem -text -noout
要输出私钥的公共部分:
openssl rsa -in key.pem -pubout -out pubkey.pem
以RSAPublicKey格式输出私钥的公共部分:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
如何将.pem转换为.crt和.key的更多相关文章
- 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)[zz]
openssl dgst –sign privatekey.pem –sha1 –keyform PEM –c c:\server.pem 将文件用sha1摘要,并用privatekey.pem中的私 ...
- 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)
之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂 ...
- OpenSSL使用2(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12概念说明)(转)
SSL SSL - Secure Sockets Layer,现在应该叫"TLS",但由于习惯问题,我们还是叫"SSL"比较多.http协议默认情况下是不加密内 ...
- 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)(使用OpenSSL的命令行)
之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂 ...
- linux下生成https的crt和key证书
今天在配置kibana权限设置时,kibana要求使用https链接. 于是总结了一下linux下openssl生成 签名的步骤: x509证书一般会用到三类文,key,csr,crt Key 是 ...
- linux下使用openssl生成https的crt和key证书
x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法. Csr 是证书请求文件,用于申请证书.在制作csr文件的时,必须使用自己的私钥来签署申,还 ...
- linq学习笔记:将List<T> 转换为 Dictionary<T Key,T Value>
运用Linq,将List<T> 转换为 Dictionary<T Key,T Value> 即:List<T> ToDictionary<T Key,T V ...
- PEM文件和private.key文件生成IIS服务器所需的pfx文件(配置SSL用)
第一步:输入域名,点击"创建免费的SSL证书"按钮,如图 第二步:输入邮箱,点击创建,如图 创建成功后,需要进行dns验证,结果图如下: 第三步:在域名所在的云服务器上,添加域名解 ...
- CentOS 7.2 下nginx SSL证书部署的方法(使用crt以及key 配置)
转自:https://www.jb51.net/article/107350.htm 环境 系统环境:CentOS6.7 nginx version: nginx/1.8.1 证书 ? 1 2 3 # ...
随机推荐
- Clustershell集群管理
在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...
- Git回版本回退
这里我们使用命令行的方式对已经提交的版本进行强行回退操作~~~ 一.将git的安装目录bin放到path路径中, 如下图所示: 二.进入cmd界面,依次输入下面内容即可(git 远程仓库 回退到指定版 ...
- BFC以及margin的深入探究
BFC(Block Formatting Context) 块级格式化上下文,它是指一个独立的块级渲染区域,只有block-level Box参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域 ...
- 弗雷塞斯 从生物学到生物信息学到机器学习 转录组入门(3):了解fastq测序数据
sra文件转换为fastq格式 1 fastq-dump -h --split-3 也就是说如果SRA文件中只有一个文件,那么这个参数就会被忽略.如果原文件中有两个文件,那么它就会把成对的文件按*_1 ...
- 【转】几款移动跨平台App开发框架比较
原文地址:https://www.cnblogs.com/songxingzheng/p/6482697.html 整理目前流行的跨平台WebApp开发技术的特点,仅供参考. 每个框架几乎都包含以下特 ...
- Ubuntu TIP
recovery进系统硬盘是挂载为“只读”的,要想改文件需要remount / 并且添加“w”(写权限). 进一次crub,再root进入 折腾几次似乎就可以编辑磁盘上的文件了
- 关于服务器raid的一个记录
今天下午,在装操作系统的时候,特意的测试了下raid1的性能. 1. 开启操作系统 直接正常开启操作系统,操作系统的硬盘做的是raid1,从而数据写俩份,从而在损坏一张盘之后,另外一张盘并不会收到影响 ...
- Oracle11gr2_ADG管理之switchover补充
之前演示的switchver总是提示下面的错误,并且需要人工干预: Oracle11gr2_ADG管理之switchover实战 DGMGRL> switchover to snewtest; ...
- 安卓开发之不通过USB数据线调试的方法
搞安卓开发的程序员肯定都需要用又笨又碍手碍脚的USB数据线连接安卓设备进行调试,是不是觉得非常麻烦? 然后为了避免这种麻烦,我们一般通过网络上的各种方法,比如AS的插件ADB WIFI,不知道大家是如 ...
- MaxScript 学习笔记【有转载】
1. string string类型的变量是一个数组,下列操作合法:strName = $.name -- output: "Shemmy_03" strName[1] --得到字 ...