将自签名证书添加到“可信列表”


87

我已经为我的构建服务器生成了一个自签名证书,并且我想在我的机器上全局信任该证书,因为我自己创建了密钥,而且我讨厌看到警告。

我在Ubuntu 12.04上。我怎样才能把证书和全球信任它,这样浏览器(谷歌浏览器),CLI工具(wget的,卷曲)和编程语言(Python和Java等)信任的连接https://mysite.com不问有问题吗?


所有TLS应该通过OpenSSL进行向量化,因此可以在此处查找文档。在这种情况下:gagravarr.org/writing/openssl-certs/…看起来很有用。
msw

Answers:


87

简单的答案是,几乎每个应用程序都会以不同的方式处理它。

此外,OpenSSL和GNUTLS(用于处理签名证书的最广泛使用的证书处理库)在对待证书方面的行为也有所不同,这也使问题更加复杂。操作系统还利用不同的机制来利用大多数网站使用的“根CA”。

除此之外,以Debian为例。安装ca-certificates软件包:

apt-get install ca-certificates

然后,将不受信任的CA证书的公共部分(用于对CSR进行签名的部分)复制到CA证书目录(作为根目录)中:

cp cacert.pem /usr/share/ca-certificates

并获得它来重建包含您的证书的目录,以根用户身份运行:

dpkg-reconfigure ca-certificates

并选择ask选项,滚动到您的证书,将其标记为包含,然后选择确定。

大多数浏览器使用自己的CA数据库,因此certutil必须使用类似的工具来修改其内容(在软件包提供的Debian上libnss3-tools)。例如,使用Chrome,您可以执行以下操作:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

Firefox将允许您浏览到磁盘上的证书,将其识别为证书文件,然后将其导入到根CA列表中。

curl您还可以使用其他大多数命令(例如,take命令行开关)指向您的CA,

 curl --cacert  /path/to/CA/cert.file https://...

或完全放弃SSL验证

 curl --insecure https://...

如果ca-certificates类似的技巧没有针对该特定应用进行排序,其余的则需要进行单独调查。


此外,如上所述这里,加入CA证书的Java同样是另一回事。
Naftuli Kay 2014年

2
将证书复制到/ usr / share / ca-certificates后,在dpkg-reconfigure ca-certificates列表中看不到它。我究竟做错了什么?
乔治·杜佩隆(GeorgesDupéron)2015年

18
@GeorgesDupéron发生在我身上。我通过重命名证书解决它whatever.pemwhatever.crt
世界


2
仅供参考,我有一个名为的证书文件.cer,但该文件无效。我必须将其重命名.crt为它才能被认可。
阮阮

53

非互动方式

要在非交互式环境(例如厨师食谱)中使用,可以使用以下顺序。

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • 经过测试,可在debian 5/6和Ubuntu 14.04上运行。
  • 有关更多信息,请参见 man update-ca-certificates

此方法优于@Drav方法,因为/usr/share/通常保留给OS /添加的文件apt-get


4
最好将这些文件复制到/usr/local/share/ca-certificates/手册页中提到的位置
ortang

3
仅供参考,A必须是a .crt,我发现.cert声称已添加了A ,但并没有帮助
KCD

6

在Fedora 23上,将.pem或.der文件添加到/etc/pki/ca-trust/source/anchors/并运行sudo update-ca-trust extract

请参阅man update-ca-trust以获取详细信息,例如使用/ etc还是/ usr。


4

在centos中:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

我何时openssl connect应该指定此/ anchors文件夹?我仍然收到错误消息“self signed certs
Janac Meena,

2


最近基于Debian的系统的非交互式方法(Oct'18)

将证书添加到主机的存储区并激活它,以便应用程序真正利用它们,这是有区别的。不一定要使用商店中的现有证书(尽管我必须承认仍然有很多程序包仍然会出错),
当您设置考虑/etc/ca-certificate.conf并只是拒绝使用您的证书的程序包时,这可能会造成混淆已添加,没有错误。您需要update-ca-certificates通过将其添加到/etc/ca-certificate.conf或来明确告知要激活(不仅是复制,还要激活)证书/etc/ca-certificate/update.d

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

现在,这里变得令人困惑,因为有一种方法可以通过使用不同的路径来隐式信任证书:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.