我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。

我该怎么做才能让Chrome接受证书并停止抱怨?


当前回答

从Chrome 58+开始,由于缺少SAN,我开始在macOS上获取证书错误。下面是如何再次获得地址栏上的绿色锁。

使用以下命令生成新证书:openssl请求\-新密钥rsa:2048\-2009年5月\-节点\-keyout服务器.key\-新的\-输出服务器.crt\-subj/CN=*.domain.dev\-请求SAN\-扩展SAN\-配置<(cat/System/Library/OpenSSL/OpenSSL.cnf\<(printf'[SAN]\nobjectAltName=DNS:*.domain.dev'))\-沙256\-720天将server.crt导入KeyChain,然后双击证书,展开“信任”,然后选择“始终信任”

刷新页面https://domain.dev在Google Chrome中,绿色锁又回来了。

其他回答

我该怎么做才能让Chrome接受证书并停止抱怨?

您应该使用以下项创建PKI:;

自签名根CA。子/中间证书[由根CA签署]。正常/最终实体证书[由根CA或子CA签名]commonName或subjectAltName(SAN)作为“localhost”。还包括https://localhost/作为SAN中的URI。将该根CA作为“受信任的根证书颁发机构”导入/安装到Windows操作系统中。因为你提到了IE:Google Chrome在寻找证书链时使用了相同的资源。将该最终实体证书安装为您的web服务器证书,它将停止抱怨该错误消息。

希望这有帮助。

更新日期:2020年4月23日

铬团队推荐

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-测试强大功能

快速超级简单解决方案

有一个秘密的绕过短语,可以在错误页面中输入,让Chrome不顾安全错误继续运行:这是不安全的(在早期版本的Chrome中,键入baddidea,甚至更早版本的危险)。除非你完全明白为什么需要它,否则不要使用它!

资料来源:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/

(注意,window.atob('dGhpc2lzdW5zYWZl')解析为此isnsafe)

源的最新版本为@https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interentials/corebrowser/resources/intertial_large.js和window.atob函数可以在js控制台中执行。

有关Chrome团队为何更改旁路短语(第一次)的背景信息:

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

如果所有其他方法都失败(解决方案1)

对于快速一次性,如果“无论如何继续”选项不可用,或者旁路短语也不起作用,这个黑客很好:

通过启用此标志,允许来自本地主机的证书错误(注意,更改标志值后,Chrome需要重新启动):chrome://flags/#allow-不安全的本地主机(并投票赞成答案https://stackoverflow.com/a/31900210/430128作者@Chris)如果要连接的站点是localhost,那么就完成了。否则,设置TCP隧道以在本地侦听端口8090,并连接到端口443上的broken-remote-site.com,确保已安装socat并在终端窗口中运行以下内容:socat tcp侦听:8090,reuseddr,fork tcp:断开远程站点.com:443去https://localhost:8090在浏览器中。

如果所有其他方法都失败(解决方案#2)

类似于“如果所有其他都失败(解决方案#1)”,这里我们使用ngok为本地服务配置代理。因为您可以通过TLS访问ngrok http隧道(在这种情况下,它由ngrok使用有效证书终止),也可以通过非TLS端点访问,所以浏览器不会抱怨证书无效。

下载并安装ngrok,然后通过ngrok.io公开它:

ngrok http https://localhost

ngok将启动并为您提供一个可以连接到的主机名,所有请求都将通过隧道传输回本地计算机。

当我尝试在浏览器中导入证书时,它对我不起作用。。。在chrome中,打开Developer Tools>Security,然后选择View certificate。单击“详细信息”选项卡并将其导出。

//LINUX操作系统

sudo apt-get install libnss3-tools 

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

运行此命令,如果您看到您刚刚导入的文件,就可以开始了!

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

//Windows

Start => run => certmgr.msc

在左侧选择受信任的根证书颁发机构=>个人。单击操作选项卡=>所有操作/导入,然后从浏览器中选择之前导出的文件

别忘了重新启动chrome!!!

祝你好运!;)

当单击URL旁边的小划掉的锁定图标时,您将看到一个如下所示的框:

单击证书信息链接后,您将看到以下对话框:

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

您可以使用其他答案中列出的方法之一将证书添加到该存储,也可以使用:

certutil -addstore -user "ROOT" cert.pem

ROOT是前面提到的证书存储的内部名称。cert.pem是自签名证书的名称。

2021 6月-Windows 10-Chrome v91(SIMPLE)

按照selfsignedcertificate.com上的证书生成说明进行操作:

示例域名:mydomain.local,请将其替换为您的域名。

要生成密钥,请执行以下操作:openssl genrsa-out mydomain.local.key 2048创建仅包含以下内容的配置文件mydomain.local.conf:[要求]区分名称=请求[桑]subjectAltName=DNS:mydomain.local注意:在subjectAltName中,您可以定义更多域(可选),如:subjectAltName=DNS:mydomain.local,DNS:*.mydomain.local,DNS:其他域.local,IP:192.168.1.10创建证书:openssl req-new-x509-key mydomain.local.key-out mydomain.local.crt-days 3650-subj/CN=mydomain.local-extensions SAN-config mydomain.local.conf将证书添加到受信任的根证书颁发机构右键单击mydomain.local.crt文件从上下文菜单中选择安装证书。在弹出窗口中选择本地机器。选择“将所有证书放置在以下存储中”。单击浏览。选择受信任的根证书颁发机构。单击“确定”、“下一步”、“完成”。重新启动Chrome。