我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
当前回答
更新日期: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!!!
祝你好运!;)
在受信任的根CA存储中添加CA证书。转到chrome并启用此标志!
chrome://flags/#allow-不安全的本地主机
最后,只需使用*.me域或任何有效的域,如*.com和*.net,并将它们保存在主机文件中。对于我的本地设备,我使用*.me或*.com,主机文件维护如下:
添加到主机。C: /windows/system32/drivers/etc/hosts127.0.0.1下一页
注意:如果在执行此操作时浏览器已打开,则错误将继续显示。因此,请关闭浏览器并重新启动。更好的办法是,隐姓埋名,或者立即开始新的疗程。
Windows:生成并自签名证书
这是一个在windows上生成根证书和实际域证书的“单文件”示例。编辑前四个变量,无需CMD进一步输入:
SET ROOT=my-root
SET NAME=demodomain
SET SUBJECT=/C=CH/O=My Demo Company
SET PASSWORD=ptGXHr3sudczSL9Q
:: Generate private key
openssl genrsa -des3 -out %ROOT%.key -passout pass:"%PASSWORD%" 2048
:: Generate root certificate
openssl req -x509 -new -nodes -key %ROOT%.key -sha256 -days 3650 -out %ROOT%.crt -passin pass:"%PASSWORD%" -subj "%SUBJECT%"
openssl genrsa -out %NAME%.key 2048
openssl req -new -key %NAME%.key -subj "%SUBJECT%/CN=%NAME%" -out %NAME%.csr
(
echo authorityKeyIdentifier=keyid,issuer
echo basicConstraints=CA:FALSE
echo keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
echo subjectAltName = @alt_names
echo [alt_names]
echo DNS = %NAME%)>config.ext
openssl x509 -req -in %NAME%.csr -CA "%ROOT%.crt" -CAkey "%ROOT%.key" -CAcreateserial -out %NAME%.crt -days 1780 -sha256 -extfile config.ext -passin pass:"%PASSWORD%"
:: cleanup files used for certificate generation
del %NAME%.csr
del config.ext
如果您想在一个文件中包含完整的链,请在bat文件中添加以下内容:
:: build chain in certificate-file
echo %ROOT%.crt >> %NAME%.crt
Type "%ROOT%.crt" >> %NAME%.crt
如果要验证证书,请附加以下内容:
openssl verify -CAfile "%ROOT%.crt" -verify_hostname %NAME% %NAME%.crt
打开根证书my-root.crt并将其添加到windows证书存储(选择“受信任的根证书颁发机构”):
Chrome中的最终结果:
仅适用于本地主机
只需将其粘贴到您的铬中:
chrome://flags/#allow-insecure-localhost
您应该看到突出显示的文本:
允许从本地主机加载的资源的证书无效
单击启用。
其他站点
尝试在窗口的任何位置键入thisisnsafe,浏览器将允许您访问该页面。
-OR-
对于本地自签名证书,可以避免晦涩难懂的命令、专门知识和手动步骤,请尝试从这个答案中选择mkcert。
在Windows 10上进行本地测试时,上面的答案对我没有帮助
https://localhost:<端口>。
然而,我找到了这个页面,指示要传递的另一个标志:
https://www.chromium.org/blink/serviceworker/service-worker-faq
如果您想在https://localhost使用自签名证书,请执行以下操作:$ ./chrome—允许不安全的本地主机https://localhost
这并没有消除红色警告,但它确实使我能够使用仅限https的功能,如服务工作者和网络推送通知。