我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
当前回答
为了在Windows上进行开发,您可以添加到Chrome快捷方式标志--忽略证书错误
它希望忽略证书错误,并允许您访问无效的证书网站。中更详细的说明https://support.opendns.com/entries/66657664.
其他回答
我不得不调整macosx上的Chrome启动程序,并添加了以下脚本。保存如下:;
/应用程序/Google\Chrome.app/Contents/MacOS/Chrome.com命令
#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname "$0")"
exec "$AppDir/$RealBin" --ignore-certificate-errors "$@"
当我用这个脚本启动Chrome时,自签名证书可以正常工作。但是,不要使用使用此脚本启动的浏览器浏览网页,您将不会收到有关无效证书的警告!
mac/osx上的SSL/HTTPS localhost修复程序:
尝试打开https localhost环境时,单击地址栏中带有十字的红色锁。将打开一个窗口,其中包含有关证书的一些信息。单击“详细信息”信息窗口chrome Developer工具在“安全”选项卡上打开。单击查看证书。证书映像将其添加到您的“System”钥匙链(而不是默认选择的“login”钥匙链)。再次打开钥匙链并找到证书。点击它,确保你“信任”所有人。重新启动chrome,它应该可以工作。
这篇文章已经得到了大量的响应,但我基于其他一些答案创建了一个bash脚本,以便更容易生成在Chrome中有效的自签名TLS证书(在Chrome65.x中测试)。希望它对其他人有用。
自签名tls-bash脚本
安装(并信任)证书后,不要忘记重新启动Chrome(chrome://restart)
另一个值得一看的工具是CloudFlare的cfssl工具包:
cfssl
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
)
对于Fedora、Ubuntu、Linux,如果您在使用gui添加证书以添加新的根权限时遇到example.com Not a Certification authority错误。如果您希望信任服务器自签名证书,它不能提及无效的授权。。。即使这是它自己。我只通过信任我的权限并使用该权限密钥对服务器证书进行签名来使其工作。
这是它接受的自签名CA证书。这是我找到绕过cert_authority_invalid的唯一方法,我花了几个小时试图让它接受一个自签名的端点证书,没有雪茄。只要声明为CA:TTRUE,用户界面将接受自签名授权。之后,chrome将接受由具有正确DN的密钥签名的所有证书,而无需单独添加它们。
openssl req-new-x509-extensions v3_req-days 8440-config ca.conf-key rockstor.key-out rockstor.cert
[req]
distinguished_name=dn
req_extensions=v3_req
prompt = no
[v3_req]
basicConstraints=CA:TRUE,pathlen:0
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@alt_names
[alt_names]
DNS.1 = ca.tdpowerskills.com
[dn]
C = US
ST = LA
L = Alexandria
O = TDPS Certification Authority
OU = LEARNOPS
CN = ca.tdpowerskills.com
openssl req-new-x509-extensions v3_req-days 8440-config config.conf-key rockstor.key-out rockstor.cert
[req]
distinguished_name=dn
req_extensions=v3_req
prompt = no
[v3_req]
basicConstraints=CA:FALSE
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@alt_names
issuerAltName=DNS:ca.tdpowerskills.com
[alt_names]
DNS.1 = big.tdps.app
[dn]
C = US
ST = LA
L = Alexandria
O = TDPS Certification Authority
OU = LEARNOPS
CN = ca.tdpowerskills.com
如果这不起作用:
chrome://restart实际重新启动尝试使用firefox获取有关错误的更多详细信息,它会更好地解释错误。。。当chrome会说ERR_CERTIFICATE_INVALID时,firefox会抛出:MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY。请记住,chrome现在需要Subject Alternate Name,并且几乎忽略CN。
对于其他人:
certutil-d sql:$HOME/.pki/nssdb-A-t“P,,”-n<昵称>-i<my.crt>//用于服务器支持certutil-d sql:$HOME/.pki/nssdb-A-t“C,,”-n<昵称>-i<my.crt>用于CAhttps://blogs.oracle.com/meena/about-trust-flags-of-certificates-in-nss-database-that-can-be-modified-by-certutil对于Firefox,添加异常证书的UI确实有效,一旦你这样做,它就会信任它。也许您在/etc/pki/tls/openssl.cnf中有一些时髦的设置,这些设置与您的配置合并在一起。也许您没有向配置或命令行添加扩展,例如v3_req注意,我的方法只需使用授权密钥签署证书并添加开发服务器的详细信息,就不需要CSR。CSR允许更多密钥用于实际安全。我尝试了一切,但chrome需要具有基本约束CA:true集的权限。服务器证书必须由有效的授权机构签名。。。即使这只是他们用CA签名的另一个证书:true。