在 redhat 中导入自签名证书

Posted

技术标签:

【中文标题】在 redhat 中导入自签名证书【英文标题】:import self signed certificate in redhat 【发布时间】:2014-04-25 21:34:50 【问题描述】:

如何在 Red-Hat Linux 中导入自签名证书。

我不是证书方面的专家,我很难通过谷歌搜索找到正确的答案,因为我不知道 .cer、.crt 或 .pem 之间的区别。话虽如此,我想做的不应该是火箭科学(在 Windows 中,我只需在浏览器中点击几下就可以做到这一点) 我想连接到使用自签名证书的服务器。例如使用 wget,而不必使用 --no-check-certificate 选项。 为了完成这项工作,我必须将服务器的自签名证书添加到我的 RedHat 盒子中。我发现证书位于 /etc/pki/tls 中。但是我不知道应该执行什么操作才能使 wget 正常运行而不会抱怨。

我可以使用以下方式从服务器获取 SSL 证书:

openssl s_client -connect server:443

证书介于“BEGIN CERTIFICATE 和 END CERTIFICATE”之间,不知道这是什么证书。 接下来我必须将它放在 /etc/pki/tls/certs 目录中并应用一些我不知道的 openssl secert 酱。 你能帮忙吗?

【问题讨论】:

【参考方案1】:

我不知道将特定站点证书导入 OpenSSL 信任数据库的方法(我希望我这样做了!),但是由于您在谈论自签名证书,我们可以通过导入您的证书来处理它作为新的受信任 CA 证书。但警告:您还将信任任何由该证书签名的网站。

查找并下​​载证书

您可以通过以下方式直接从网站快速下载自签名证书:

openssl s_client -connect server:443 <<<'' | openssl x509 -out /path/file

请注意,您应该在自签名证书的情况下执行此操作(如原始问题中所述)。 如果证书是由其他 CA 签署的,则不能使用上述方法运行;相反,您需要找到相应的 CA 证书并下载。

导入证书并使其受信任

update-ca-trust 命令是通过RHEA-2013-1596 在 Fedora 19 和 RHEL6 中添加的。如果你有它,你的步骤很简单(但需要 root/sudo):

    将 CA 证书复制到 /etc/pki/ca-trust/source/anchors/ update-ca-trust enable; update-ca-trust extract (请注意,在 RHEL7 和现代 Fedora 中,enable 命令不是必需的)

如果您没有 update-ca-trust,它只会稍微困难一些(并且仍然需要 root/sudo):

    cd /etc/pki/tls/certs 在此处复制 CA 证书 ln -sv YOURCERT $(openssl x509 -in YOURCERT -noout -hash).0

PS:这个问题提到了 Red Hat,但对于任何想要在 Fedora/RHEL 之外的其他东西上做同样事情的人来说,wiki.cacert.org/FAQ/ImportRootCert 可能会有所帮助。

【讨论】:

// ,这是唯一在我所谓的现代 CEntOS 7.5 新构建系统上工作的东西。 update-ca-trust 不可靠。 你有验证上述命令是否成功的命令吗? 这也适用于 Oracle Enterprise Linux 6。我很确定 enable 参数 在这个平台上是必需的,值得。 这在 Oracle Enterprise Linux 7 中也有效,我没有设置启用参数。【参考方案2】:

您可以使用以下步骤做您想做的事情:

    将 SSL 证书(包括“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”行)放入目录“@987654321”中的文件中@" - 举个例子,我们称它为“myserver.pem”。

    通过运行计算此证书的证书哈希

    openssl x509 -noout -hash -in /etc/pki/tls/certs/myserver.pem

    为了举例,假设哈希值为“1a2b3c4d”。

    根据这个hash值在certs目录下做一个符号链接,像这样:

    ln -s /etc/pki/tls/certs/myserver.pem /etc/pki/tls/certs/1a2b3c4d.0

    我假设这个目录中已经没有其他证书可以散列到相同的散列值 - 如果已经有一个“1a2b3c4d.0”,那么将你的链接改为“1a2b3c4d.1”(或者如果有已经是“.1”,让你的“.2”,等等...)

wget 和其他使用 SSL 的工具随后会将该证书识别为有效。使用 GUI 可能有更简单的方法,但可以通过命令行来完成。

【讨论】:

一件事让我对这个答案感到困惑(并导致我研究并最终写出我自己的答案)是没有提到你如何只能将 CA 证书放在 /etc/pki/tls/certs/ 中,即:您不能只在此处导入和信任一些非自签名站点证书。

以上是关于在 redhat 中导入自签名证书的主要内容,如果未能解决你的问题,请参考以下文章

自签名证书可以用吗?

OpenSSL生成HTTPS自签名证书

MAC申请自签名的ssl证书

什么是自签名SSL证书?

如何创建一个自签名的SSL证书

openssl 自签名证书 - 安装openssl(一)