• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    如何将pem证书转换为.crt和.key与证书格式介绍

    发布者: 皮3591 | 发布时间: 2025-8-16 04:03| 查看数: 64| 评论数: 0|帖子模式

    证书格式介绍
    1. PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:
    复制代码

      1. PKCS#7
      复制代码
      :Cryptographic Message Syntax Standard
      1. PKCS#10
      复制代码
      :Certification Request Standard
      1. PKCS#12
      复制代码
      :Personal Information Exchange Syntax Standard
      1. X.509
      复制代码
      :是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
      1. PKCS#7
      复制代码
      :常用的后缀是: .P7B .P7C .SPC
      1. PKCS#12
      复制代码
      :常用的后缀有: .P12 .PFX
      1. X.509
      复制代码
      :DER 编码(ASCII)的后缀是: .DER .CER .CRT
      1. X.509
      复制代码
      :PAM 编码(Base64)的后缀是: .PEM .CER .CRT
      1. .cer/.crt
      复制代码
      :是用于存放证书,它是2进制形式存放的,不含私钥
      1. .pem
      复制代码
      :跟crt/cer的区别是它以Ascii来表示。
      1. pfx/p12
      复制代码
      :用于存放个人证书/私钥,他通常包含保护密码,2进制方式
      1. p10
      复制代码
      :是证书请求
      1. p7r
      复制代码
      :是CA对证书请求的回复,只用于导入
      1. p7b
      复制代码
      :以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。
    关于证书后缀格式来自: https://www.chinassl.net/ssltools/convert-ssl-commands.html
    .pem转换的问题描述

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

    可以使用以下方式将pem转换为crt:
    1. openssl x509 -outform der -in your-cert.pem -out your-cert.crt
    复制代码
    可行的解决方法整理

    使用OpenSSL进行转换

    以下命令允许将证书和密钥转换为不同的格式,使其与特定类型的服务器或软件兼容。

      1. DER
      复制代码
      文件(
      1. .crt .cer .der
      复制代码
      )转换为
      1. PEM
      复制代码
    1. openssl x509 -inform der -in certificate.cer -out certificate.pem
    复制代码

      1. PEM
      复制代码
      文件转换为
      1. DER
      复制代码
    1. openssl x509 -outform der -in certificate.pem -out certificate.der
    复制代码

    • 将包含私钥和证书的
      1. PKCS#12
      复制代码
      文件(
      1. .pfx .p12
      复制代码
      )转换为
      1. PEM
      复制代码
    1. openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
    复制代码
    1. You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
    复制代码

      1. PEM
      复制代码
      证书文件和私钥转换为
      1. PKCS#12(.pfx .p12)
      复制代码
    1. openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    复制代码

      1. PEM
      复制代码
      转换为
      1. CRT(.CRT文件)
      复制代码
    1. openssl x509 -outform der -in certificate.pem -out certificate.crt
    复制代码
    OpenSSL转换PEM


      1. PEM
      复制代码
      转换为
      1. DER
      复制代码
    1. openssl x509 -outform der -in certificate.pem -out certificate.der
    复制代码

      1. PEM
      复制代码
      转换为
      1. P7B
      复制代码
    1. openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
    复制代码

      1. PEM
      复制代码
      转换为
      1. PFX
      复制代码
    1. openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    复制代码
    1. OpenSSL
    复制代码
    转换
    1. DER
    复制代码



      1. DER
      复制代码
      转换为
      1. PEM
      复制代码
    1. openssl x509 -inform der -in certificate.cer -out certificate.pem
    复制代码
    1. OpenSSL
    复制代码
    转换
    1. P7B
    复制代码



      1. P7B
      复制代码
      转换为
      1. PEM
      复制代码
    1. openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    复制代码

      1. P7B
      复制代码
      转换为
      1. PFX
      复制代码
    1. openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    复制代码
    1. openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
    复制代码
    1. OpenSSL
    复制代码
    转换
    1. PFX
    复制代码



      1. PFX
      复制代码
      转换为
      1. PEM
      复制代码
    1. openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
    复制代码
    通过
    1. OpenSSL
    复制代码
    生成
    1. rsa
    复制代码
    密钥



    • 在命令行上使用
      1. OpenSSL
      复制代码
      ,首先需要生成公钥和私钥,应该使用
      1. -passout
      复制代码
      参数密码保护此文件,该参数可以采用许多不同的形式,可以请参阅
      1. OpenSSL
      复制代码
      文档。
      1. openssl genrsa -out private.pem 1024
      复制代码
    • 这将创建一个名为private.pem的密钥文件,该文件使用1024位(bits)。该文件实际上同时具有私钥和公钥,可以从该文件中提取公共密钥:
    1. openssl rsa -in private.pem -out public.pem -outform PEM -pubout
    复制代码
    or
    1. openssl rsa -in private.pem -pubout > public.pem
    复制代码
    or
    1. openssl rsa -in private.pem -pubout -out public.pem
    复制代码
    现在你的
    1. public.pem
    复制代码
    只包含公钥,可以和第三方自由地分享。可以通过使用公钥加密自己的东西然后使用私钥进行解密来测试,首先我们需要一些数据做加密:

    • 示例文件:
    1. echo 'too many secrets' > file.txt
    复制代码
    现在在
    1. file.txt
    复制代码
    中有一些数据,可以使用
    1. OpenSSL
    复制代码
    和公钥进行加密:
    1. openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
    复制代码

    • 这将创建一个加密版本的
      1. file.txt
      复制代码
      ,命令这个文件为
      1. file.ssl
      复制代码
      (如果直接打开这个文件查看那么它看起来只是二进制垃圾,人类无法看懂)。然后可以使用私钥解密它:
    1. openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
    复制代码

    • 现在在
      1. decryptpted.txt
      复制代码
      中有一个未加密的文件:
    1. cat decrypted.txt
    2. |output -> too many secrets
    复制代码
    1. OpenSSL
    复制代码
    中的
    1. RSA
    复制代码
    工具选项



    • 名称:
      1. rsa - RSA密钥处理工具
      复制代码
    • 概要:
      1. 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]
      复制代码
    • 说明:
      1. rsa
      复制代码
      命令处理
      1. RSA
      复制代码
      密钥。它们可以在各种形式之间进行转换,并将其组件打印出来。注意,此命令使用传统的
      1. SSLeay
      复制代码
      兼容格式进行私钥加密:较新的应用程序应使用
      1. pkcs8
      复制代码
      实用程序使用更安全的
      1. PKCS#8
      复制代码
      格式。
    • 命令选项:
      1. -help
      复制代码
      :打印出使用信息。
      1. -inform DER|NET|PEM
      复制代码
      :指定输入格式。 DER选项使用与PKCS#1 RSAPrivateKey或SubjectPublicKeyInfo格式兼容的ASN1 DER编码格式。 PEM格式是默认格式:它由DER格式base64编码,带有附加的页眉和页脚行。在输入PKCS#8格式的私钥也被接受。 NET格式是在NOTES部分中描述的格式。
      1. -outform DER|NET|PEM
      复制代码
      :指定输出格式,选项与-inform选项的含义相同。
      1. -in filename
      复制代码
      :如果未指定此选项,则指定从或从标准输入读取密钥的输入文件名。如果密钥加密,将提示输入密码。
      1. -passin arg
      复制代码
      :输入文件的密码来源。有关arg的格式的更多信息,参阅openssl中的PASS PHRASE ARGUMENTS部分。
      1. -out filename
      复制代码
      :如果未指定此选项,则指定将密钥写入或输出的输出文件名。如果设置了任何加密选项,则会提示输入密码。输出文件名不能与输入文件名相同。
      1. -passout password
      复制代码
      :输出文件密码来源。有关arg的格式的更多信息,参阅openssl中的PASS PHRASE ARGUMENTS部分。
      1. -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
      复制代码
      这些选项在输出之前用指定的密码加密私钥。会有同通行提示信息。如果没有指定这些选项,则key以纯文本形式写入。这些选项只能用于PEM格式的输出文件。
      1. -text
      复制代码
      :除了编码版本之外,以纯文本形式打印各种公共或私人密钥组件。
      1. -noout
      复制代码
      :此选项可防止输出密钥的编码版本。
      1. -modulus
      复制代码
      :此选项打印出该键的取模数值。
      1. -check
      复制代码
      :此选项将检查RSA私钥的一致性。
      1. -pubin
      复制代码
      :默认情况下,从输入文件读取私钥:使用此选项读取公钥。
      1. -pubout
      复制代码
      :默认情况下会输出一个私钥:使用此选项将会输出一个公钥。如果输入是公钥,则会自动设置此选项。
      1. -RSAPublicKey_in, -RSAPublicKey_out
      复制代码
      :像-pubin和-pubout一样,除了使用RSAPublicKey格式的情形。
      1. -engine id
      复制代码
      :指定一个引擎(通过其获得唯一的id字符串)将导致rsa尝试获得对特定引擎功能的引用,从而在需要时进行初始化。然后,引擎将被设置为所有可用算法的默认值。
    笔记


    • PEM私钥格式使用以下页眉和页脚行:
    1. -----BEGIN RSA PRIVATE KEY-----

    2. -----END RSA PRIVATE KEY-----
    复制代码

    • PEM公钥格式使用以下页眉和页脚行:
    1. -----BEGIN PUBLIC KEY-----

    2. -----END PUBLIC KEY-----
    复制代码

    • PEM RSAPublicKey格式使用以下页眉和页脚线:
    1. -----BEGIN RSA PUBLIC KEY-----

    2. -----END RSA PUBLIC KEY-----
    复制代码
    1. NET
    复制代码
    格式是与旧的
    1. Netscape
    复制代码
    服务器和
    1. Microsoft IIS .key
    复制代码
    文件兼容的格式,它使用未加密的
    1. RC4
    复制代码
    进行加密。这种方法不是很安全,所以只能在必要时使用。一些较新版本的
    1. IIS
    复制代码
    在导出的
    1. .key
    复制代码
    文件中有其他额外的数据。要使用这些实用程序,请使用二进制编辑器查看文件,并查找字符串
    1. "private-key"
    复制代码
    ,然后追溯到字节序列
    1. 0x30
    复制代码
    1. 0x82
    复制代码
    (这是一个
    1. ASN1 SEQUENCE
    复制代码
    )。将所有数据从此点复制到另一个文件,并将其用作带有
    1. -inform NET
    复制代码
    选项的
    1. rsa
    复制代码
    实用程序的输入。
    例子


    • 要删除RSA私钥上的密码短语:
    1. openssl rsa -in key.pem -out keyout.pem
    复制代码

    • 使用三重DES加密私钥:
    1. openssl rsa -in key.pem -des3 -out keyout.pem
    复制代码

    • 将私钥从PEM转换为DER格式:
    1.   openssl rsa -in key.pem -outform DER -out keyout.der
    复制代码

    • 将私钥的组件输出到标准输出:
    1. openssl rsa -in key.pem -text -noout
    复制代码

    • 要输出私钥的公共部分:
    1.   openssl rsa -in key.pem -pubout -out pubkey.pem
    复制代码

      1. RSAPublicKey
      复制代码
      格式输出私钥的公共部分:
    1.   openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    复制代码
    到此这篇关于如何将pem证书转换为.crt和.key与证书格式介绍的文章就介绍到这了,更多相关如何将pem证书转换为.crt和.key与证书格式介绍内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表