我已经为构建服务器生成了自签名证书,并且希望自己在自己的计算机上全局信任该证书,因为我是自己创建密钥的,所以我讨厌看到警告。

我正在使用Ubuntu 12.04。如何获得证书并在全球范围内信任它,以便浏览器(Google Chrome),CLI实用程序(wget,curl)和编程语言(Python,Java等)信任与https://mysite.com的连接有问题吗?

评论

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

#1 楼

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

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

,以Debian为例。安装ca-certificates软件包:

apt-get install ca-certificates


,然后将不受信任的CA证书的公共一半(用于签名CSR的那个)复制到CA证书目录中(如root):

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


并以包含证书的方式重建目录,以root身份运行:

dpkg-reconfigure ca-certificates


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

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

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


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

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

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

< br或完全放弃SSL验证

 curl --insecure https://...


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

评论


另外,如此处所述,为Java添加CA证书同样是另一回事。

– Naftuli Kay
2014年3月28日0:40在

将证书复制到/ usr / share / ca-certificates后,在dpkg-reconfigure ca-certificates列表中看不到它。我究竟做错了什么?

– SuzanneDupéron
15年2月17日在19:21

@GeorgesDupéron发生在我身上。我通过将证书从what.pem重命名为what.crt来解决了该问题。

– Hello World
2015年10月3日7:19



refmanuals.gfi.com/en/kerio/connect/content/server-configuration/…

– qxo
18年7月18日在3:09

仅供参考,我有一个名为.cer的证书文件,该文件不起作用。我必须将其重命名为.crt才能被识别。

– Tri Nguyen
19年3月1日在19:10

#2 楼

非交互式方法

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

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添加的文件。

评论


如手册页中所述,最好将文件复制到/ usr / local / share / ca-certificates /

–ortang
16年4月4日在10:20

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

– KCD
16 Dec 13'3:53

#3 楼

在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文件夹吗?我仍然收到错误消息“自签名证书

–贾纳克·梅纳(Janac Meena)
18年7月13日在13:52

#5 楼

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

在向主机存储中添加证书和激活证书以使应用程序真正利用它们之间是有区别的。商店中的现有证书不一定要使用(尽管我必须承认仍然有很多软件包仍会出错)
当您设置考虑/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;


#6 楼

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates


上面的这两行第一次对我不起作用。

经过调查,结果发现/etc/ca-certificates.conf中排除了许多证书,因为该行以!开头

因此,我必须删除以!开头的所有行中的第一个字符。

sudo sed -i '/^!/s/^.//g' /etc/ca-certificates.conf
sudo update-ca-certificates


现在的卷发功能不需要--cacert选项! !

评论


您刚刚重新启用了所有已禁用的证书,例如,不良行为者或已过期的证书。那不聪明

– FKEinternet
20-10-29在21:52