当前位置:首页 > IT > 正文内容

如何将.pem转换为.crt和.key?

admin6年前 (2018-10-26)IT1096

.pem转换的问题描述

.pem文件中提取/转换证书.crt和私钥.key文件的正确方法或者命令是什么?我知道它们是可转换的,但是不清楚怎么做。

快捷方式:

openssl x509 -outform der -in full.pem -out your-cert.crt

下载.jpg

最佳解决方法

可以使用以下方式将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 1024
  • 这将创建一个名为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 RSAPrivateKeySubjectPublicKeyInfo格式兼容的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

扫描二维码推送至手机访问。

版权声明:本文由小龙的博客发布,如需转载请注明出处。

本文链接:https://xl.cndyun.com/post/363.html

“如何将.pem转换为.crt和.key?” 的相关文章

如何搭建个人网站

如何搭建个人网站

【腾讯云的1001种玩法】从0到1搭建自己的互联网领地本文转载自腾讯云   作者:姜学栋 项目简介通过使用腾讯云多种产品(CVM、CDN、CDB、COS、SSL证书)并配合使用知名 CMS 系统 WordPress,从无到有打造一个自己在互联网空间中的自留地。项目架构CDN(内容...

CNDyun宣传片1

CNDyun宣传片1

当前浏览器不能支持视频播放,请采用chrome或IE9以上浏览器 原创内容转载需注明...

小龙的博客全球节点访问

小龙的博客全球节点访问

小龙的博客全球节点访问华东华北日本美东新加坡华南香港中东欧洲美西澳大利亚一起学习,一起进步!...

Linux服务器安装Apache/Nginx+MySQL+PHP

Linux服务器安装Apache/Nginx+MySQL+PHP...

本地权限提升漏洞 “Stack Clash”处理方案

近日,国外安全厂商研究人员发现Linux、BSD、Solaris 和其它开源系统存在一个本地权限提升漏洞 “Stack Clash”(漏洞编号为 CVE-2017-1000364) ,攻击者可以利用该漏洞获取 root 权限进行代码执行。腾讯云安全中心建议您及时关注官方漏洞补丁更新情况并开展安全修复...

发现了一个https的优点

发现了一个https的优点

http网站会被运营商劫持https网站不会被劫持由于没有宽带用的是流量所以就被移动劫持了...