我的工作决定发布自己的证书颁发机构(CA),以安全地处理我们工作的各个方面,而无需支付证书费用。 />可以访问基于公司IRC客户端证书的信息。
自动撤消前员工的密钥

他们给我发送了一个.pem文件,我不确定如何添加它到我的Ubuntu安装。发送的说明是:“在Mac上双击它应该安装它。”

我该如何进行?我需要对OpenSSL进行一些操作以创建.key.csr.crt文件吗?

评论

注释“发送的说明是:\“在Mac上双击它应该安装它。”“令我很高兴

@mzoll以及转义这些引号的方式

#1 楼

安装CA
将PEM格式的证书(其中包含----BEGIN CERTIFICATE----的格式)复制到/usr/local/share/ca-certificates中,并以.crt文件扩展名命名。
然后运行sudo update-ca-certificates
注意:仅此安装影响使用此证书存储区的产品。有些产品可能会使用其他证书存储区;如果使用这些产品,则还需要将此CA证书添加到其他证书存储中。 (Firefox指令,Chrome指令,Java指令)
测试CA
您可以通过查找刚刚在/etc/ssl/certs/ca-certificates.crt中添加的证书(这只是所有受信任的长列表)来验证此CA是否有效CA串联在一起。
还可以通过尝试连接到您知道使用刚安装的CA签名的证书的服务器来使用OpenSSL的s_client。
$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

寻找的是输出顶部附近的证书链。这应该将CA显示为颁发者(i:旁边)。这告诉您服务器正在提供由要安装的CA签名的证书。
其次,查找最后的verify return code设置为0 (ok)

评论


这个真的有效

– Sabareesh Kkanan
15年8月4日在20:14

感谢您注意到firefox / chrome不使用默认的证书存储。

– Tim Strijdhorst
2015年12月10日下午16:26

请注意,update-ca-certificates可能非常挑剔(可能是设计使然)。 mycert.pem.crt无效,但mycert.crt无效。我也认为它需要是/ usr / local / share / ca-certificates,而不是/ usr / share / ca-certificates(尽管在/etc/ca-certificates.conf中有什么注释)。

–迷宫
2015年12月15日17:39



感谢crt扩展名的评论,这是为我完成这项工作的秘密,我获得了带有cert扩展名的证书,并对为什么什么都不起作用感到困惑。

–赎金Briggs
16-3-29在16:31

一个警告:s_client默认情况下不发送SNI,并且服务器可能需要SNI,尤其是当它支持具有不同证书的虚拟主机/站点时;对于这种情况,请添加-servername foo.whatever.com。或者,如果是Web服务器,则使用curl(或现代版本)自动执行SNI的curl或wget。

–dave_thompson_085
16年5月14日在3:40

#2 楼

man update-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

评论


似乎也需要使用.crt扩展名命名证书。

–善待您的Mod
13年5月5日在23:12

感谢您的注释@phyzome-否则将无法添加我的证书。

–塞伊里亚
2015年3月17日14:03



我必须添加--fresh才能使其正常工作。例如更新ca证书-新鲜

–伊利亚·林恩(Elijah Lynn)
19年6月25日在4:13

#3 楼

关于update-ca-certificates的其他答案对于从系统证书存储区读取的应用程序是正确的。对于Chrome和Firefox,以及其他一些可能的证书,必须将证书放在nssdb(Mozilla NSS库的后端)中。
来自
https://code.google.com/p/chromium/ wiki / LinuxCertManagement:例如,要信任用于颁发SSL服务器证书的根CA证书,请使用
certutil -d sql:$ HOME / .pki / nssdb -A -t“ C ,“ -n <证书昵称> -i <证书名称>

其中<certificate nickname>是任意的,而<certificate filename>是您的.pem或.crt文件。
其他有用的参考资料:

常规说明:https://wiki.archlinux.org/index.php/Network_Security_Services


certutil手册页,描述了上面使用的参数:https:// developer .mozilla.org / zh-CN / docs / NSS_reference / NSS_tools _:_ certutil



评论


谢谢。它可以在适用于Chrome 53.0.2785.143的Ubuntu 16.04上运行,但是Firefox 49似乎具有单独的存储数据库,必须从about:preferences#advanced [查看证书]-> [权限]-> [导入]中添加。 askubuntu.com/a/248326/535154

– mauron85
16-10-12在12:31



顺便说一句,如果要在第一次运行Chrome之前安装cert(即.pki / dir仍然丢失),则必须首先创建nssdb:mkdir -p $ HOME / .pki / nssdb && chmod -R 0700 $ HOME / .pki && certutil -d sql:$ HOME / .pki / nssdb -N-空密码

–akavel
16年15月15日在16:21

有一种方法可以使Chrome和Firefox从系统证书存储中读取。见我的答案:superuser.com/a/1312419/506107

– Wheeler
18年4月10日在1:05

太好了,谢谢。现在可以完美地在企业SSL解密后面使用Slack和Teams Preview。

–贝文
20年1月21日在23:01

Firefox允许您配置安全模块...默认情况下它不使用chrome使用的相同模块...您可以通过加载/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so来添加它在firefox证书设置下的安全模块列表中。一旦知道,超级简单。

–雷·福斯(Ray Foss)
20-09-16在17:06

#4 楼

我遇到了同样的问题,我不得不将.pem文件复制到/usr/local/share/ca-certificates,并将其重命名为.crt。例如,如果您没有.cer,则可以使用openssl轻松地将.pem文件转换为.pem

复制文件后,必须执行sudo update-ca-certificates

评论


openssl x509-通知DER-输入certificate.cer-输出certificate.crt

– webwurst
18年2月26日在11:37

#5 楼

对于基于Debian的较新版本,您可能需要运行:
执行以下任何操作之前,您当然仍然需要将证书(.crt文件)复制到/ usr / share / ca-certificates :)

#6 楼

基于dwmw2的答案,您实际上可以告诉使用NSS进行证书管理的应用程序使用系统信任库。

默认情况下,libnss3附带一组只读的根CA证书(libnssckbi.so),因此大多数时候您需要手动将它们自己添加到位于$HOME/.pki/nssdb的本地用户信任存储中。 p11-kit提供了libnssckbi.so的直接替代品,用作/etc/ssl/certs中安装的系统范围根证书的适配器。

编辑:

似乎libnssckbi.so的版本比libnss3的版本更多。以下是查找所有脚本,备份它们并用指向p11-kit的链接替换它们的脚本:为此,请安装p11-kitlibnss3(如果尚未安装):

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


然后备份libnssckbi.so提供的现有libnss3

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


最后,创建符号链接: :

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak


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

评论


我一直在努力争取Ubuntu 18.04在过去3天中能够正常运行,无论出于何种原因它都无法正常工作。我将p11-kit-trust.so链接到libnssckbi.so,但是当我这样做时,再也没有证书了。任何我启用了https的网站(基本上都是https)都会提示存在安全问题。有什么明显的我想念的东西吗?

–凯文·瓦斯科(Kevin Vasko)
19-10-25在21:34



这真是太棒了,无论如何对于Firefox来说都是一种魅力。建议的脚本对您有危险。我建议您先在系统上尝试单独查找,以查看找到的内容。我有一个庞大的系统,它会在时移备份中发挥作用,例如,根据我正在处理的内容,我随时都可以安装几个sshfs,并且也可以拆分成多个。无论如何,我都会使用locate查找它们并一一修补它们,或者编写一个仅遍历指定文件的脚本。

– Bernd Wechner
20年8月20日在12:19

@KevinVasko我现在是20.04,没有麻烦。仅尝试使用Firefox,但工作正常。在执行此类操作并保留它们时,我会做笔记,并为自己指出,这些文件是.so文件,所以是二进制目标文件,并且为了确保Firefox使用新的文件,必须关闭Firefox并重新启动。但是,are,不是很清楚“什么都没有证书”的意思-在什么情况下?在/ etc / ssl / certs中?

– Bernd Wechner
20年8月20日在12:24

#7 楼

如上所述,使用NSS的各种应用程序都有自己的证书存储。就Ubuntu而言,您必须手动使用certutil为每个用户的每个应用程序添加您的CA。

在Fedora等其他发行版中,这种东西Just Works™,您应该提交可以针对不自动信任使用update-ca-trust安装的CA的任何应用程序提供错误。 ,例如,通过建立从p11-kit-modulesp11-kit-trust.so的符号链接,您将获得系统配置的信任根,而不是某些硬编码的信任根。请注意,Ubuntu附带了带有硬编码信任根的libnssckbi.so库的多个不同副本,您必须替换所有这些副本!

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

评论


当我执行sudo查找/ -type f -name“ libnssckbi.so”时,它在三个位置找到libnssckbi.so:/ usr / lib / thunderbird /,/ usr / lib / firefox /和/ usr / lib / x86_64- linux-gnu / nss /。所以您是说我应该将所有这三个文件夹中的libnssckbi.so链接到p11-kit-trust.so?

– Wheeler
18年4月10日在0:06

好的,只需确认链接/usr/lib/x86_64-linux-gnu/nss/libnssckbi.so-> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so就可以像执行CHARM。我能够将证书添加到/ usr / local / share / ca-certificates,运行sudo update-ca-certificates,然后PRESTO,Chrome开始接受自签名证书。

– Wheeler
18年4月10日在0:32

@ dwmw2我一直在与Ubuntu 18.04进行斗争,以尝试使其在过去3天中都能正常工作,无论出于何种原因,它都无法正常工作。我将p11-kit-trust.so链接到libnssckbi.so,但是当我这样做时,再也没有证书了。任何我启用了https的网站(基本上都是https)都会提示存在安全问题。有什么明显的我想念的东西吗?

–凯文·瓦斯科(Kevin Vasko)
19-10-25在21:44

#8 楼

在这里添加的答案非常愚蠢,但是我花了2个小时来回在linux上使用certutils。 ,在Chrome中没有任何作用。我尝试了一切,最后。