使用 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
?
您只需将它们连接起来
如果它还包含密钥(在某些情况下它是必需的,但取决于使用情况)
如果您检查输出,您会看到类似这样的内容(如果是 chain.pem):
如果是 full_chain.pem,它将是这样的:
如果您使用它“检查”它,
openssl x509 -in chain.pem
您只会看到第一个(在这种情况下是服务器)证书。其余所有将作为注释处理 - 被忽略。您必须将其分隔为额外的文件,或者仅通过管道将特定的行范围打印到 openssl 以查看内容。可以使用 cat 或您喜欢的某些文本编辑器“直观地”完成真正的检查...一旦应用程序期望 pem / crt 文件,这就是您所需要的。如果您想将其作为“容器”处理,则正确的形式是 pkcs12。在那里,您可以将其作为一组证书处理并以这种方式处理并查看/导入它。该命令将在这种情况下
可以使用命令检查 pkcs12 输出
请注意,“正确”格式(p12 或 pem / crt)取决于使用情况。