如何安装根证书?

Spa*_*ky1 319 certificates

任何人都可以指出我在 Ubuntu 上安装根证书的好教程吗?

我得到了一个.crt文件。我认为需要创建一个目录/usr/share/ca-certificates/newdomain.org并将其.crt 放在该目录中。除此之外,我不确定如何进行。

小智 422

安装根/CA 证书

给定一个 CA 证书文件foo.crt,按照以下步骤在 Ubuntu 上安装它:

  1. 在以下位置为额外的 CA 证书创建一个目录/usr/share/ca-certificates

     sudo mkdir /usr/local/share/ca-certificates/extra
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将 CA.crt文件复制到此目录:

     sudo cp foo.crt /usr/local/share/ca-certificates/extra/foo.crt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 让Ubuntu上添加.crt文件的相对路径/usr/local/share/ca-certificates/etc/ca-certificates.conf

     sudo dpkg-reconfigure ca-certificates
    
    Run Code Online (Sandbox Code Playgroud)

要以非交互方式执行此操作,请运行:

    sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)

如果是.pemUbuntu上的文件,则必须首先将其转换为.crt文件:

openssl x509 -in foo.pem -inform PEM -out foo.crt
Run Code Online (Sandbox Code Playgroud)

或者.cer可以将文件转换为.crt文件:

openssl x509 -inform DER -in foo.cer -out foo.crt
Run Code Online (Sandbox Code Playgroud)

  • 如何使用`/usr/local/share/ca-certificates`(本地!)而不是使用系统包管理管理的目录? (76认同)
  • 请注意,文件 * 必须* 为 PEM 格式并具有“.crt”扩展名。 (24认同)
  • 命令 `openssl x509 -in foo.pem -inform PEM -out foo.crt` 将 PEM 文件复制到 PEM 文件。这可以通过重命名更容易地完成。 (21认同)
  • 请注意,Firefox(可能还有其他一些软件)不使用系统范围的证书,但有自己的证书存储:http://askubuntu.com/a/248326/79344。 (11认同)
  • PEM 和 crt 是两个不相关的东西。PEM 是一种编码(与 .DER 相对),而 crt 只是用于指示内容的命名约定(与 .key 相对) (6认同)
  • 确认对于 20.04,如果将文件放入 `/usr/share/ca-certificates/extra` 中,这些说明将有效 (4认同)
  • `sudo dpkg-reconfigure ca-certificates` 谢谢,另一个 `sudo update-ca-certificates --fresh` 在 16.10 上不起作用。 (2认同)
  • 请注意,Chromium 和 Firefox 不使用系统 ca 证书,因此需要单独的说明。对于 Chromium,请访问 chrome://settings/certificates,单击 Authorities,然后单击 import,然后选择您的 .crt。在 Firefox 中,访问 about:preferences#advanced,单击证书、查看证书、权限,然后单击导入并选择您的 .crt。 (2认同)
  • @Marian 我认为即使输入 PEM 实际上是证书链而不是单个 X.509 证书(在阅读内容之前,您无法确定 `*.pem` 里面是什么),转换命令也能工作。在这种情况下,它不是简单的文件复制。 (2认同)
  • +1 表示 pem 到 crt 的转换或未找到新证书。 (2认同)

小智 244

给定一个 CA 证书文件“foo.crt”,按照以下步骤在 Ubuntu 上安装它:

首先,将您的 CA 复制到 dir /usr/local/share/ca-certificates/

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
Run Code Online (Sandbox Code Playgroud)

然后,更新 CA 存储

sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)

就这样。你应该得到这个输出:

Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....
Adding debian:foo.pem
done.
done.
Run Code Online (Sandbox Code Playgroud)

不需要编辑文件。到您的 CA 的链接是自动创建的。

请注意,证书文件名必须以 结尾.crt,否则update-ca-certificates脚本将无法获取它们。

此过程也适用于较新版本:手册

  • 请注意,与添加到 /usr/share/ca-certificates 不同,这似乎只有在它们直接位于 /usr/local/share/ca-certificates 而不是子目录时才有效。+1 用于使用本地文件夹而不是系统文件夹! (32认同)
  • 这记录在 [README.Debian](https://anonscm.debian.org/cgit/collab-maint/ca-certificates.git/tree/debian/README.Debian) 中。 (2认同)
  • 谢谢!它也适用于 18.04,但是复制 `crt` 文件 `/usr/share/ca-certificates/extra` 的第一个答案似乎不起作用。 (2认同)

mah*_*ich 14

之间澄清update-ca-certificatesdpkg-reconfigure ca-certificates为什么一个作品和其他没有!

  • update-ca-certificates或者sudo update-ca-certificates 只会工作,如果/etc/ca-certificates.conf已经更新。

  • /etc/ca-certificate.conf 在您运行dpkg-reconfigure ca-certificates更新要导入的证书名称后才会更新/etc/ca-certificates.conf

这在/etc/ca-certificates.conf文件的标题中说明:

# This file lists certificates that you wish to use or to ignore to be
# installed in /etc/ssl/certs.
# update-ca-certificates(8) will update /etc/ssl/certs by reading this file.
#
# This is autogenerated by dpkg-reconfigure ca-certificates.  <=======
# Certificates should be installed under /usr/share/ca-certificates
# and files with extension '.crt' is recognized as available certs.
#
# line begins with # is comment.
# line begins with ! is certificate filename to be deselected.
#
mozilla/ACCVRAIZ1.crt
mozilla/AC_RAIZ_FNMT-RCM.crt
mozilla/Actalis_Authentication_Root_CA.crt
mozilla/AddTrust_External_Root.crt
...
Run Code Online (Sandbox Code Playgroud)

如您所见,格式/etc/ca-certificates.conf<folder name>/<.crt name>

因此,为了使用update-ca-certificates或者sudo update-ca-certificates您可以执行以下操作来导入 .crt:

  1. 在 /usr/share/ca-certificates 中为额外的 CA 证书创建一个目录:

    sudo mkdir /usr/share/ca-certificates/extra
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将 .crt 文件复制到此目录:

    sudo cp foo.crt /usr/share/ca-certificates/extra/foo.crt
    
    Run Code Online (Sandbox Code Playgroud)
  3. /etc/ca-certificates.confusing 中添加一行<folder name>/<.crt name>

    echo "extra/foo.crt" >> /etc/ca-certificates.conf
    
    Run Code Online (Sandbox Code Playgroud)
  4. 更新证书的非交互使用sudo更新CA证书

    $ sudo update-ca-certificates
    ...
    Updating certificates in /etc/ssl/certs...
    1 added, 0 removed; done.
    
    Run Code Online (Sandbox Code Playgroud)


小智 12

在 Ubuntu 上安装证书颁发机构

我已经在 Ubuntu 14.04 上测试过了。

这是我的解决方案,我查看并寻找了很长时间,试图弄清楚如何让它发挥作用。

  1. 从浏览器中提取 .cer。我用的是 IE 11。
    • 设置 -> Internet 选项 -> 中间证书颁发机构
    • 选择您想要导出的证书颁发机构(certutil -config - -ping如果您使用公司代理,则会显示您正在使用的证书颁发机构)
    • 导出 -> 选择您要使用的格式:DER Encoded .cer
  2. 以某种方式获取 .cer 文件到 Ubuntu
  3. 转换为 .crt openssl x509 -inform DER -in certificate.cer -out certificate.crt
  4. 制作额外的目录 sudo mkdir /usr/share/ca-certificates/extra
  5. 复制证书 sudo cp certificate.crt /usr/share/ca-certificates/extra/certificate.crt
  6. sudo update-ca-certificates
  7. 如果没有,那么你必须做我所做的,去 sudo nano /etc/ca-certificates.conf
  8. 向下滚动并找到您的 .cer 并删除!文件名前面的from (update-ca-certificates doc) - 如果您没有找到您的证书运行dpkg-reconfigure ca-certificates
  9. sudo update-ca-certificates
  10. 您可能需要单独信任来自 Firefox、Chrome 等的 CA,我需要它与 Docker 一起工作,所以在这些步骤之后它与 Docker 一起工作。


小智 5

其他答案在 Ubuntu 18.04 上对我不起作用。/etc/ssl/certs/ca-certificates.crt使用以下命令将证书证书附加到:

cat YOUR_CERT_HERE.crt >> /etc/ssl/certs/ca-certificates.crt 
Run Code Online (Sandbox Code Playgroud)

  • 注意:这是临时解决方案,因为添加的证书将在运行 `update-ca-certificates` 后被删除。 (2认同)