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

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


当前回答

为了在Windows上进行开发,您可以添加到Chrome快捷方式标志--忽略证书错误

它希望忽略证书错误,并允许您访问无效的证书网站。中更详细的说明https://support.opendns.com/entries/66657664.

其他回答

mac/osx上的SSL/HTTPS localhost修复程序:

尝试打开https localhost环境时,单击地址栏中带有十字的红色锁。将打开一个窗口,其中包含有关证书的一些信息。单击“详细信息”信息窗口chrome Developer工具在“安全”选项卡上打开。单击查看证书。证书映像将其添加到您的“System”钥匙链(而不是默认选择的“login”钥匙链)。再次打开钥匙链并找到证书。点击它,确保你“信任”所有人。重新启动chrome,它应该可以工作。

WINDOWS 2017年6月WINDOWS Server 2012

我听从了布拉德·帕克斯的回答。在Windows上,您应该在受信任的根证书颁发机构存储中导入rootCA.pem。

我执行了以下步骤:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

其中v3.ext为:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

然后,在我的例子中,我有一个自托管的web应用程序,所以我需要将证书与IP地址和端口绑定,证书应该在我的存储库中,并带有私钥信息,所以我导出为pfx格式。

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

使用mmc控制台(文件/添加或删除管理单元/证书/添加/计算机帐户/本地计算机/确定),我在个人存储中导入了pfx文件。

后来我使用这个命令绑定证书(您也可以使用HttpConfig工具):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash=证书Thumprint

appid=GUID(您的选择)

首先,我尝试以不同的方式在受信任的根证书颁发机构上导入证书“device.crt”,但仍然收到相同的错误:

但我意识到我应该导入根权限的证书,而不是域的证书。所以我使用mmc控制台(文件/添加或删除管理单元/证书/添加/计算机帐户/本地计算机/OK),在受信任的根证书颁发机构存储中导入了rootCA.pem。

重新启动Chrome,它就可以工作了。

使用localhost:

或IP地址:

我唯一做不到的是,它有过时的密码(图片上的红色方框)。在这一点上,我们非常感谢帮助。

使用makecert,无法添加SAN信息。使用NewSelfSignedCertificate(Powershell),您可以添加SAN信息,它也可以工作。

我刚刚在我的chrome中启用了允许不安全的localhost标志,就这样。

步骤。

类型chrome://flags在您的铬标签中。搜索允许不安全的本地主机标志并启用它。重新启动chrome浏览器。

现在,您将不会看到不安全的警告https://localhost地点。

通过此方法允许不安全的本地主机正常工作chrome://flags/#allow-不安全的本地主机

只需要将开发主机名创建为xxx.localhost。

您确定站点的地址与证书相同吗?我对Chrome和自签名证书也有同样的问题,但最后我发现它对证书上域名的验证非常挑剔(应该如此)。

Chrome没有自己的证书存储,而是使用Windows自己的证书。然而,Chrome不提供将证书导入商店的方法,因此您应该通过IE添加证书。

在Google Chrome中安装证书

在Internet Explorer中安装证书

还可以看看这两种不同的创建自签名证书的方法(我假设您使用的是您没有提到的IIS)。

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