如何在 Red-Hat Linux 中导入自签名证书。
我不是证书方面的专家,并且发现很难通过谷歌搜索找到正确的答案,因为我不知道 .cer、.crt 或 .pem 之间的区别。话虽如此,我想做的不应该是火箭科学(在 Windows 中,我只需在浏览器中单击几下即可完成此操作) 我想连接到使用自签名证书的服务器。例如使用 wget,而不必使用 --no-check-certificate 选项。 为了完成这项工作,我必须将服务器的自签名证书添加到我的 RedHat 盒子中。我发现证书位于 /etc/pki/tls 中。但我不知道应该执行什么操作才能使 wget 功能没有抱怨。
我可以使用以下方法从服务器获取 SSL 证书:
openssl s_client -连接服务器:443
证书位于“BEGIN CERTIFICATE 和 END CERTIFICATE”之间,我不知道这是什么证书。 接下来,我必须将其放在 /etc/pki/tls/certs 目录中,并应用一些我不知道的 openssl 秘密酱。 你能帮忙吗?
我不知道如何将特定站点证书导入 OpenSSL 的信任数据库(我希望我做到了!),但既然您正在谈论自签名证书,我们可以通过将您的证书导入为新证书来解决它受信任的 CA 证书。但警告:您还将信任由该证书签名的任何网站。
您可以直接从网站快速下载自签名证书:
openssl s_client -connect server:443 <<<'' | openssl x509 -out /path/file
请注意,您应该仅在自签名证书的情况下执行此操作(如原始问题中所述)。 如果证书是由其他 CA 签名的,则无法使用上述命令运行;相反,您需要找到适当的 CA 证书并下载。
Fedora 19 和 RHEL6 中通过
RHEA-2013-1596添加了
update-ca-trust
命令。如果你有它,你的步骤就很简单(但需要 root/sudo):
/etc/pki/ca-trust/source/anchors/
update-ca-trust enable; update-ca-trust extract
enable
命令在 RHEL7 和现代 Fedora 中不是必需的)如果你没有 update-ca-trust,这只是有点困难(并且仍然需要 root/sudo):
cd /etc/pki/tls/certs
ln -sv YOURCERT $(openssl x509 -in YOURCERT -noout -hash).0
PS:这个问题提到了 Red Hat,但对于任何想要对 Fedora/RHEL 之外的东西做同样事情的人来说,wiki.cacert.org/FAQ/ImportRootCert 可能会有所帮助。
您可以使用以下步骤做您想做的事情:
/etc/pki/tls/certs
”中的文件中- 为了举例,我们将其称为“myserver.pem”。通过运行计算此证书的证书哈希值
openssl x509 -noout -hash -in /etc/pki/tls/certs/myserver.pem
为了举例,我们假设哈希值为“1a2b3c4d”。
根据此哈希值在 certs 目录中创建符号链接,如下所示:
ln -s /etc/pki/tls/certs/myserver.pem /etc/pki/tls/certs/1a2b3c4d.0
我假设此目录中已经没有其他证书哈希为相同的哈希值 - 如果已经有“1a2b3c4d.0”,则将您的链接改为“1a2b3c4d.1”(或者如果已经有“.1”,制作你的“.2”,等等...)
wget
和其他使用 SSL 的工具将识别该证书有效。可能有一种更简单的方法可以使用 GUI 来完成此操作,但可以通过命令行来完成此操作。
这个问题缺乏公认的答案,应该是最多点赞的答案。
有时仍然需要这样做,这是我在
ubi-min
RedHat 基础映像上使用的解决方案来自定义我的 docker 映像。
澄清一下,设置包括 RH yum 存储库的企业 Nexus 代理,代理 sert 是自签名的,并且容器将连接到一些具有自签名证书的主机。
由于容器是无根的,我必须先切换:
USER root
ADD <your-cert.crt> /etc/pki/ca-trust/source/anchors/<your-cert.crt>
RUN update-ca-trust enable; update-ca-trust extract
RUN sed -i 's#https://cdn-ubi.redhat.com/content/public/ubi#https://proxy-with-your-cert/cdn-ubi-redhat#g' /etc/yum.repos.d/ubi.repo
RUN microdnf install nano
USER nobody