2012-06-15 16:14:17 +0000 2012-06-15 16:14:17 +0000
186
186

如何在Ubuntu中添加一个证书机构(CA)?

我的工作已经决定发行自己的证书机构(CA)来安全地处理我们工作的不同方面,而不需要支付证书费用。

  • 加密签署邮件
  • 加密邮件内容
  • 加密邮件内容
  • 使访问像公司的IRC 客户端证书这样的东西都是基于客户证书。发来的说明是: “在Mac上双击它应该安装它。”  

我该怎么做?我需要用OpenSSL来创建一个.pem.key.csr文件吗?

答案 (8)

253
253
253
2014-02-19 19:13:09 +0000

安装 CA

将您的证书以 PEM 格式(其中有 ----BEGIN CERTIFICATE---- 的格式)复制到 /usr/local/share/ca-certificates 中,并将其命名为 .crt 文件扩展名。某些產品可能會使用其他證書庫;如果你使用這些產品,你需要將此 CA 證書也加入到其他證書庫中。 Firefox Instructions , Chrome Instructions , Java Instructions )

测试 CA

你可以通过在 sudo update-ca-certificates 中查找刚刚添加的证书来验证是否成功(这是一个长长的列表,将所有可信的 CA 的所有证书串联在一起)。你也可以使用OpenSSL的s_client,尝试连接到一个你知道的服务器上,而这个服务器上的证书是由你刚刚安装的CA签署的。这应该显示的是CA作为发证者(/etc/ssl/certs/ca-certificates.crt旁边)。

其次,寻找最后的i:设置为verify return code

69
69
69
2012-06-15 18:07:40 +0000

man upd-ca-certificates :

update-ca-certificates is a program that updates the directory /etc/ssl/certs to hold SSL
certificates and generates ca-certificates.crt, a concatenated single-file list of
certificates.

It reads the file /etc/ca-certificates.conf. Each line gives a pathname of a CA
certificate under /usr/share/ca-certificates that should be trusted. Lines that begin
with "#" are comment lines and thus ignored. Lines that begin with "!" are deselected,
causing the deactivation of the CA certificate in question. Certificates must have a .crt
extension in order to be included by update-ca-certificates.

Furthermore all certificates with a .crt extension found below /usr/local/share/ca-
certificates are also included as implicitly trusted.

从上面的内容来看,我推断出要把本地的证书文件放到可信存储中,首选的方法是把它们放到/usr/local/share/ca-certificates中,然后运行update-ca-certificates。你不需要直接接触/etc/ssl/certs

15
15
15
2013-10-10 18:46:49 +0000

其他关于update-ca-certificates的答案对于从系统证书库中读取的应用程序是正确的。对于Chrome和Firefox,可能还有其他一些应用,证书必须放在nssdb中,也就是Mozilla NSS库的后台。 pki/nssdb -A -t “C,,,” -n <证书昵称> -i <证书文件名>

其中<certificate nickname>是任意的,<certificate filename>是你的.pem或.crt文件。https://wiki.archlinux.org/index.php/Network_Security\Security\Services - certutil man page,描述了上面使用的参数。https://developer.mozilla.org/en-US/docs/NSS_reference/NSS\tools:_certutil

15
15
15
2014-04-30 13:39:09 +0000

我也遇到了同样的问题,我不得不把.pem文件复制到/usr/local/share/ca-certificates中,重命名为.crt.cer文件可以很容易转换为.pem,比如说用openssl,如果你没有.pem的话,可以把sudo update-ca-certificates文件转换成&007。

11
11
11
2015-09-02 06:19:09 +0000

对于基于 Debian 的较新版本,你可能需要运行:

sudo dpkg-reconfigure ca-certificates

注意:sudo dpkg-reconfigure ca-certificates 内部调用 upd-ca-certificates

当然,在做这些事情之前,你仍然需要将证书 (.crt 文件) 复制到 /usr/share/ca-certificates 中。)

6
6
6
2018-04-10 01:00:50 +0000

在dwmww2的答案的基础上,你实际上可以告诉使用NSS进行证书管理的应用程序使用系统信任商店。

libnss3默认情况下, libnssckbi.so附带了一组只读的根CA证书($HOME/.pki/nssdb),所以大多数时候你需要自己手动添加到位于p11-kit中的本地用户信任商店中。libnssckbi.so提供了一个可替代/etc/ssl/certs的即插即用的替代方案,它作为一个适配器,可替代安装在libnssckbi.so中的全系统根证书。下面是一个脚本来找到它们,将它们全部备份,并将它们替换成libnss3的链接:

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

原始说明:

要做到这一点,请安装p11-kitp11-kit(如果还没有安装的话):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

然后备份现有的libnss3提供的libnssckbi.so。最后,创建符号链接:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

最后,创建符号链接:

lrwxrwxrwx 1 root root 49 Apr 9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

确认成功后,你可以运行libnss3,它应该会显示出链接:

&001

现在,如果你使用ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so将证书添加到CA存储中,这些证书将可以使用NSS(update-ca-certificates)的应用程序,如Chrome浏览器。

3
3
3
2016-12-12 12:36:34 +0000

如前所述,各种使用NSS的应用程序都有自己的证书库。在Ubuntu上,你必须手动使用certutil来为每个应用程序、每个用户添加CA。

在其他发行版如Fedora上,这种事情只需用update-ca-trust就可以了,你应该对任何不能自动信任p11-kit-modules安装的CA的应用程序提出bug。在Ubuntu中,你也可以通过安装p11-kit-trust.so包,然后用/usr/lib/firefox/libnssckbi.so替换NSS built-in trust roots模块来解决这个问题,例如,从/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

,然后你就会得到系统配置的信任根,而不是一些硬编码的信任根。请注意,Ubuntu 提供了多个不同的 libnssckbi.so 库的different副本,而你必须替换所有的信任根!

参见 https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285

1
1
1
2018-01-02 12:58:09 +0000

我在这里补充了一个非常愚蠢的答案,但我花了2个小时来回在linux中使用certutils….. 我确定一切都是正确的:

hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb

Certificate Nickname Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

anyproxy CT,, 
rootCA CT,, 
myasos CT,,

但在chrome中仍然没有任何效果。我试了所有的东西,最后…..

Restarting Chrome

是我成功的关键。Steven Monday](https://superuser.com/questions/437330/how-do-you-add-a-certificate-authority-ca-to-ubuntu#437377)的建议