我已经为我的构建服务器生成了一个自签名证书,并且我想在我的机器上全局信任该证书,因为我自己创建了密钥,而且我讨厌看到警告。
我在Ubuntu 12.04上。我怎样才能把证书和全球信任它,这样浏览器(谷歌浏览器),CLI工具(wget的,卷曲)和编程语言(Python和Java等)信任的连接https://mysite.com不问有问题吗?
我已经为我的构建服务器生成了一个自签名证书,并且我想在我的机器上全局信任该证书,因为我自己创建了密钥,而且我讨厌看到警告。
我在Ubuntu 12.04上。我怎样才能把证书和全球信任它,这样浏览器(谷歌浏览器),CLI工具(wget的,卷曲)和编程语言(Python和Java等)信任的连接https://mysite.com不问有问题吗?
Answers:
简单的答案是,几乎每个应用程序都会以不同的方式处理它。
此外,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
类似的技巧没有针对该特定应用进行排序,其余的则需要进行单独调查。
dpkg-reconfigure ca-certificates
列表中看不到它。我究竟做错了什么?
whatever.pem
来whatever.crt
。
.cer
,但该文件无效。我必须将其重命名.crt
为它才能被认可。
要在非交互式环境(例如厨师食谱)中使用,可以使用以下顺序。
sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
man update-ca-certificates
此方法优于@Drav方法,因为/usr/share/
通常保留给OS /添加的文件apt-get
。
/usr/local/share/ca-certificates/
手册页中提到的位置
.crt
,我发现.cert
声称已添加了A ,但并没有帮助
在centos中:
cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
openssl connect
应该指定此/ anchors文件夹?我仍然收到错误消息“self signed certs
最近基于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;