我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
当前回答
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt
openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)
其他回答
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中,打开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!!!
祝你好运!;)
我不得不调整macosx上的Chrome启动程序,并添加了以下脚本。保存如下:;
/应用程序/Google\Chrome.app/Contents/MacOS/Chrome.com命令
#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname "$0")"
exec "$AppDir/$RealBin" --ignore-certificate-errors "$@"
当我用这个脚本启动Chrome时,自签名证书可以正常工作。但是,不要使用使用此脚本启动的浏览器浏览网页,您将不会收到有关无效证书的警告!
您确定站点的地址与证书相同吗?我对Chrome和自签名证书也有同样的问题,但最后我发现它对证书上域名的验证非常挑剔(应该如此)。
Chrome没有自己的证书存储,而是使用Windows自己的证书。然而,Chrome不提供将证书导入商店的方法,因此您应该通过IE添加证书。
在Google Chrome中安装证书
在Internet Explorer中安装证书
还可以看看这两种不同的创建自签名证书的方法(我假设您使用的是您没有提到的IIS)。
如何在IIS 7中创建自签名证书
单击页面上的任意位置并键入BYPASS_SEQUENCE:
BYPASS_SEQUENCE |
Chrome Version |
---|---|
thisisunsafe |
65 - ? |
badidea |
62 - 64 |
danger |
? - 61 |
您不需要查找输入字段,只需键入它即可。这感觉很奇怪,但它有效。我在Mac High Sierra上试过了。
要再次检查他们是否再次更改,请转到最新的Chromium源代码。此时BYPASS_SEQUENCE如下所示:
var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');
现在他们把它伪装起来了,但要看到真正的BYPASS_SEQUENCE,您可以在浏览器控制台中运行以下行。
console.log(window.atob('dGhpc2lzdW5zYWZl'));
OR
除了键入短语,您还可以在控制台中粘贴代码部分
sendCommand(SecurityInterstitialCommandId.CMD_PROCEED)