AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 971878
Accepted
Anatol
Anatol
Asked: 2019-06-19 03:23:20 +0800 CST2019-06-19 03:23:20 +0800 CST 2019-06-19 03:23:20 +0800 CST

Openssl 使用中间证书将 pem 转换为 crt

  • 772

使用 Firefox,很容易将页面使用的 SSL 证书导出为 x509,并将所有中间证书导出为 *.crt。

我需要通过使用 openssl 将 *.pem 文件转换为 *.crt 作为非二进制格式来做同样的事情。

这些是apache当前使用的证书:

SSLCertificateFile /etc/apache2/ssl/cert-start.pem
SSLCertificateKeyFile /etc/apache2/ssl/key-no-pw.pem
SSLCACertificateFile /etc/apache2/ssl/cert-bundle.pem

我可以使用以下方法轻松地将其转换SSLCertificateFile为 crt:

openssl x509  -in cert-start.pem -out cert-start.crt

为了构建带有完整链的crt,我尝试过-chain,-clcerts但没有运气。

包含所有中间证书的正确方法是什么SSLCACertificateFile /etc/apache2/ssl/cert-bundle.pem?

openssl
  • 2 2 个回答
  • 55075 Views

2 个回答

  • Voted
  1. Ergec
    2019-06-19T03:50:14+08:002019-06-19T03:50:14+08:00

    您只需将它们连接起来

    cat domain.tld.key domain.tld.crt root.crt > domain.tld.pem
    
    • 2
  2. Best Answer
    Kamil J
    2019-06-19T05:30:42+08:002019-06-19T05:30:42+08:00
    cat cert-start.pem cert-bundle.pem > chain.pem
    

    如果它还包含密钥(在某些情况下它是必需的,但取决于使用情况)

    cat cert-start.pem cert-bundle.pem key-no-pw.pem > full_chain.pem
    

    如果您检查输出,您会看到类似这样的内容(如果是 chain.pem):

    -----BEGIN CERTIFICATE-----
     ... <base64 encoded server cert> ...
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
     ... <base64 encoded intermediate cert> ...
    -----END CERTIFICATE-----
    

    如果是 full_chain.pem,它将是这样的:

    -----BEGIN CERTIFICATE-----
     ... <base64 encoded server cert> ...
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
     ... <base64 encoded intermediate cert> ...
    -----END CERTIFICATE-----
    
    -----BEGIN PRIVATE KEY-----
     ... <base64 encoded key>
    -----END PRIVATE KEY-----
    

    如果您使用它“检查”它,openssl x509 -in chain.pem您只会看到第一个(在这种情况下是服务器)证书。其余所有将作为注释处理 - 被忽略。您必须将其分隔为额外的文件,或者仅通过管道将特定的行范围打印到 openssl 以查看内容。可以使用 cat 或您喜欢的某些文本编辑器“直观地”完成真正的检查...一旦应用程序期望 pem / crt 文件,这就是您所需要的。

    如果您想将其作为“容器”处理,则正确的形式是 pkcs12。在那里,您可以将其作为一组证书处理并以这种方式处理并查看/导入它。该命令将在这种情况下

    openssl pkcs12 -export -in cert-start.pem -inkey key-no-pw.pem -certfile cert-bundle.pem -out full_chain.p12 -nodes
    

    可以使用命令检查 pkcs12 输出

    openssl pkcs12 -in full_chain.p12 -nodes
    

    请注意,“正确”格式(p12 或 pem / crt)取决于使用情况。

    • 1

相关问题

  • 如何在 Mac OS X 服务器上安装替换 SSL 证书?

  • 在 LAMPP 中升级单个库(特别是 openssl)

  • 带有基于商业 CA 的客户端证书的 ssl_error_handshake_failure_alert

  • 我可以对 *.domain.com 和 domain.com 使用相同的通配符认证吗

  • 为 apache 生成自签名 SSL 证书

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve