others - Chrome接受自行签署的本地证书

我已经为localhost CN创建了自签名SSL证书,但是,Chrome和IE拒绝接受它,即使添加到系统证书存储之后,将证书放在可信根环境下,即使在Chrome的HTTPS弹出窗口中单击“查看证书信息,列出的证书已正确安装,它仍然坚持认为证书不可信任。

要让Chrome接受证书,我应该做什么?

时间:

我这里可以工作:

  1. 使用Chrome,通过HTTPS在服务器上点击一个页面,并跳过红色警告页面(假设你还没有这么做),
  2. 打开 Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates
  3. 单击Authorities选项卡,向下滚动,在证书的组织名称下查找你的证书,
  4. 选择它,单击编辑,选中所有框并单击确定,你可能必须重新启动Chrome ,

现在,应该在你的网页上得到绿色的锁。

我在新计算机上再次尝试了此操作,跳过红色的不受信任证书页面,该证书未出现在“管理证书”窗口中。我必须执行以下操作:

  1. 在带有不可信证书(https://被划掉了)的页上,单击锁>证书信息,
  2. 点按 Details tab > Export选择 PKCS #7, single certificate作为文件格式,
  3. 然后按照我的原始指令进入管理证书页面,点按 Authorities tab > Import然后选择你导出证书的文件,并确保选择,PKCS #7, single certificate作为文件类型,
  4. 如果出现提示证书存储,请选择可信root证书颁发机构,
  5. 选中所有框并单击确定,重新启动Chrome 。

在Mac上,可以使用钥匙串访问实用程序,将自签名证书添加到系统钥匙串,然后Chrome接受它。

Google Chrome Mac OS X和自签名SSL证书

基本上:

  1. 双击带有X的锁图标,然后将证书图标拖放到桌面上,
  2. 打开此文件(以.cer扩展结尾); 这将打开钥匙串应用程序,使您可以批准证书。

  1. 对你想添加的站点,在地址 bar, right-click红色的锁 enter image description here

  2. 单击标签为 连接的选项卡,然后单击证书信息

  3. 单击收费详细信息选项卡,单击button按钮将复制到文件。。 。这将打开证书导出向导,单击下一步 前往导出文件格式屏幕了。

  4. 选择 DER编码的二进制 X.509 (. cer ) 接下来,单击

  5. 单击收费browse浏览。。 并将文件保存到计算机。 将它的命名为一些说明性的。单击 旁边,然后单击完成

  6. 打开 Chrome 设置,滚动到底部,然后单击显示高级设置。

  7. https/ssl 下,单击管理证书。

  8. 单击信任的根证书颁发机构选项卡,然后单击磅import导入。。 。button按钮。这将打开证书导入向导。 接下来单击 前往文件来导入屏幕了。

  9. 单击 - 浏览并选择之前保存的证书文件,然后单击下

  10. 选择将所有证书放入下列存储 。 所选存储应该为信任根证书颁发机构 。 如果不是,请单击收费browse浏览。。 单击完成 下个和 并选择它。

  11. 在安全警告上单击

  12. 重新启动 Chrome 。

Linux

如果你使用Linux,你还可以遵循以下官方wiki页面:

基本上:

  • 单击锁定图标,
  • 选择证书信息
  • 转到详细信息选项卡
  • 点击导出-(保存为文件)

现在,下面的命令将添加证书(其中YOUR_FILE是你的导出文件):


certutil -d sql:$HOME/.pki/nssdb -A -t"P,," -n YOUR_FILE -i YOUR_FILE

若要列出所有证书,请运行以下命令:


certutil -d sql:$HOME/.pki/nssdb -L

如果仍然无法运行,你受到此错误的影响: 问题55050 :Ubuntu SSL错误8179

在使用上述命令之前,请确保你已经有了libnss3-tools。

如果你没有,请通过以下方式安装:


sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.


另外,你可以使用以下方便的脚本:


$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t"P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'

使用方法:


add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]


问题处理

  • 使用--auto-ssl-client-auth参数运行Chrome

    google-chrome --auto-ssl-client-auth

于me,相关如果你是苹果机上的和文件夹中看不到这里worked:导出选项卡或者如何获取证书

  1. 单击 https://之前的锁
  2. 转到"连接"选项卡
  3. 单击certificate证书信息 Information"

    现在你应该看到了: Different information of course and yours should be marked as trusted yet (otherwise you probably wouldn't be here)

  4. 将小证书 icon 拖到桌面( 或者任何地方) 。

  5. 双击下载的. cer 文件,这应该将它导入到你的钥匙串,并打开钥匙串访问你的证书列表。

    在某些情况下,这就足够了,现在可以刷新页面了。

    否则:

  6. 双击新添加的证书。
  7. 在信任下拉列表下,将"使用这里证书时"选项改为"总是信任""

现在重新加载有问题的页面,应该会解决问题 ! 希望这有帮助


Wolph编辑器编辑

为了简化这一点,你可以使用以下脚本( 源: https://w.wol.ph/2015/03/01/easily-whitelistingadding-self-signed-ssl-certificates-chrome-os/ ):

  1. 将以下脚本另存为 whitelist_ssl_certificate.sh:

    
    #!/usr/bin/env bash -e
    
    SERVERNAME=$(echo"$1" | sed -E -e 's/https?:////' -e 's//.*//')
    echo"$SERVERNAME"
    
    if [["$SERVERNAME" =~. *..* ]]; then
     echo"Adding certificate for $SERVERNAME"
     echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee/tmp/$SERVERNAME.cert
     sudo security add-trusted-cert -d -r trustRoot -k"/Library/Keychains/System.keychain"/tmp/$SERVERNAME.cert
    else
     echo"Usage: $0 www.site.name"
     echo"http://and such will be stripped automatically"
    fi
    
    
  2. 使脚本成为可以执行的( 从外壳):

    
    chmod +x whitelist_ssl_certificate.ssh
    
    
  3. 运行你想要( 只需复制/粘贴完整网址即可)的域脚本:

    
    ./whitelist_ssl_certificate.ssh https://your_website/whatever
    
    

于测试环境相关.

你可以使用作为一个 命令行 参数当启动 --ignore-certificate-errors Chrome ( 在Ubuntu上工作 28.0.150版 0.52 ) 。

这将导致它忽略错误并在没有警告的情况下连接。 如果你已经有一个版本的Chrome 正在运行,你需要在从 命令行 重新启动之前关闭它,否则将打开一个新窗口,但忽略参数。

我将Intellij配置为在进行调试时以这种方式启动 Chrome,因为测试服务器没有有效的证书。

我不推荐这样的普通浏览,因为证书检查是一个重要的安全特性,但是这对一些。

你确定站点的地址与证书相同? 我对 Chrome 和self-signed证书有同样的问题,但最后我发现,在证书( 应该是) 上对域名的验证非常挑剔。

Chrome 没有自己的证书存储并使用自己的窗口。 但是 Chrome 无法将证书导入存储区,所以你应该通过 IE 来添加它们。

在 Google Chrome 中安装证书

在 IE 中安装证书

另外,我们来看一下创建self-signed证书( 假设你正在使用 IIS,但没有提到)的几种不同方法。

如何在 IIS 7中创建自签名证书

当单击URL旁边的小跨越锁定 icon 时,你会得到一个类似这样的框:

enter image description here

单击了英镑证书信息链接后,你将看到以下对话框:

enter image description here

它告诉你哪个证书存储是正确的,它是信任根证书颁发机构存储。

你可以使用其他答案中概述的方法之一将证书添加到该存储或者使用:


certutil -addstore -user"ROOT" cert.pem

  • ROOT 是前面提到的证书存储的内部名称。
  • cert.pem 是你的self-signed证书的名称。

我不得不调整Chrome的启动程序,并添加下面的脚本。 将其保存在下面

/Applications/Google Chrome.app/Contents/MacOS/Chrome.command


#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname"$0")"
exec"$AppDir/$RealBin" --ignore-certificate-errors"$@"

使用此脚本启动Chrome时,自签名证书的工作没有问题。

...