我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
当前回答
Linux上Chromium上管理SSL证书的GUI对我来说并不正常。然而,他们的文档给出了正确的答案。诀窍是运行下面的命令来导入自签名SSL证书。只需更新<certificate-name>和certificate-filename.cer的名称,然后重新启动chrome/chrome。
从文档:
在Linux上,Chromium使用NSS共享数据库。如果内置管理器不适用于您,则可以使用NSS命令行工具配置证书。获取工具Debian/Uubuntu:sudo apt-get安装libnss3工具Fedora:su-c“yum安装nss-tools”Gentoo:su-c“echo'dev-libs/nss-utils'>>/etc/portage/package.use&&emerge-dev-libs/nss”(您需要使用nss前缀启动下面的所有命令,例如nsscerttil。)Opensuse:sudo zypper安装mozilla nss工具要信任自签名服务器证书,我们应该使用certutil-d sql:$HOME/.pki/nssdb-A-t“P,,”-n<证书昵称>-i certificate-filename.cer列出所有证书certutil-d sql:$HOME/.pki/nssdb-LTRUSTARGS是三个由零个或多个字母字符组成的字符串,用逗号分隔。它们定义了SSL、电子邮件和对象签名应如何信任证书,并在certutil文档或Meena关于信任标志的博客文章中进行了解释。为SSL客户端身份验证添加个人证书和私钥使用命令:pk12util-d sql:$HOME/.pki/nssdb-i PKCS12_file.p12导入存储在PKCS#12文件中的个人证书和私钥。个人证书的TRUSTARGS将设置为“u,u,u”。删除证书certutil-d sql:$HOME/.pki/nssdb-d-n<证书昵称>
摘录自:https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md
其他回答
对于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。
Linux系统
如果您使用的是Linux,也可以关注以下官方wiki页面:
在Linux上配置SSL证书。NSS共享数据库和LINUXNSS共享数据库如何
基本上:
单击带有X的锁定图标,选择证书信息转到“详细信息”选项卡单击导出。。。(另存为文件)
现在,以下命令将添加证书(其中YOUR_FILE是导出的文件):
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE
要列出所有证书,请运行以下命令:
certutil -d sql:$HOME/.pki/nssdb -L
如果它仍然不起作用,您可能会受到此错误的影响:问题55050:Ubuntu SSL错误8179
另外,在使用上述命令之前,请确保您拥有libnss3工具。
如果没有,请通过以下方式安装:
sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.
另外,您可以使用以下方便的脚本:
$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'
用法:
add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]
故障排除
使用--auto-ssl客户端身份验证参数运行Chromegoogle chrome--自动ssl客户端身份验证
我继续使用bjnord建议的方法,即:Google Chrome、Mac OS X和自签名SSL证书
博客中显示的内容不起作用。
然而,该博客的一条评论是金色的:
sudo安全添加可信证书-d-r trustRoot-k/Library/Keychains/Systemkeychain site.crt
你需要关注博客中关于如何获取cert文件的内容,然后你可以使用上面的命令,应该很好。
修复Windows上的Chrome。
首先,您需要导出证书。
在浏览器中找到url。url的“https”段将为用红线划掉,左侧将有一个锁定符号。右键单击划掉的“https”段。您将看到一个包含各种信息的信息窗口单击“详细信息”。导出证书,按照说明接受默认设置。
要导入
转到Chrome设置单击“高级设置”在HTTPS/SSL下单击“管理证书”转到“受信任的根证书颁发机构”单击“导入”将出现一个弹出窗口,询问您是否要安装此证书。单击“是”。
我成功地遵循了凯伦的回答,并得到了托比·J的重要更新,但我不得不做出修改:
创建自签名证书时,必须将新的subjectAltName字段放在v3_ca扩展下,而不是v3_req。我将/etc/ssl/openssl.conf复制到一个临时文件中,然后在[v3_ca]下添加了一行subjectAltName=DNS:*.example.com。然后将该文件传递给cert创建命令,类似于
openssl req -x509 -nodes -newkey rsa:2048 \
-config /tmp/openssl-revised.cfg \
-keyout example.com.key -out example.com.crt
并遵循kellen更新的步骤。