首页 文章

无效的自签名SSL证书 - “主题备用名称丢失”

提问于
浏览
71

最近,Chrome已停止使用我自己签署的SSL证书,并认为它们不安全 . 当我查看 DevTools | Security 标签中的证书时,我可以看到它说

主题备用名称缺失此站点的证书不包含包含域名或IP地址的主题备用名称扩展名 . 证书错误站点的证书链存在问题(net :: ERR_CERT_COMMON_NAME_INVALID) .

我怎样才能解决这个问题?

6 回答

  • 81

    以下解决方案为我在chrome 65(ref)工作 -

    创建一个OpenSSL配置文件(例如:req.cnf)

    [req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no
    [req_distinguished_name]
    C = US
    ST = VA
    L = SomeCity
    O = MyCompany
    OU = MyDivision
    CN = www.company.com
    [v3_req]
    keyUsage = critical, digitalSignature, keyAgreement
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = www.company.com
    DNS.2 = company.com
    DNS.3 = company.net
    

    创建引用此配置文件的证书

    openssl req -x509 -nodes -days 730 -newkey rsa:2048 \
     -keyout cert.key -out cert.pem -config req.cnf -sha256
    
  • 14

    要解决此问题,您需要在创建证书时为 openssl 提供额外的参数

    -sha256 -extfile v3.ext

    其中 v3.ext 是这样的文件, %%DOMAIN%% 替换为您用作 Common Name 的相同名称 . 更多信息hereover here . 请注意,通常您将 Common Name%%DOMAIN%% 设置为您尝试为其生成证书的域 . 所以,如果它是 www.mysupersite.com ,那么你就可以使用它 .

    v3.ext

    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = %%DOMAIN%%
    

    注意:可以在此处找到解决此问题并创建完全受信任的ssl证书以在Chrome,Safari和Java客户端中使用的脚本

    Another note :如果你要做的就是在查看自签名证书时阻止chrome抛出错误,你可以告诉Chrome忽略所有站点的所有SSL错误,方法是使用特殊的命令行选项启动它,as detailed here on SuperUser

  • 0

    我创建了一个 bash script ,以便更轻松地生成在Chrome中有效的自签名TLS证书 .

    self-signed-tls bash脚本

    安装证书后,请确保重新启动chrome( chrome://restart ) . 经过 Chrome 65.x 测试,它仍然有效 .


    值得一试的另一个(更强大的)工具是CloudFlare的 cfssl 工具包:

    cfssl

  • 0

    我只是使用 -subj 参数添加机器的IP地址 . 所以只用一个命令解决了 .

    sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -subj '/CN=my-domain.com/subjectAltName=DNS.1=192.168.0.222/' -keyout my-domain.key -out my-domain.crt
    

    您可以添加其他属性,如C,ST,L,O,OU,emailAddress,以生成证书而不会被提示 .

  • 14

    通过更改v3.ext文件的DNS.1值,我能够摆脱(net :: ERR_CERT_AUTHORITY_INVALID)

    [alt_names] DNS.1 = domainname.com

    使用您自己的域名更改domainname.com .

  • 4

    MAC 从chrome版本67.0.3396.99开始,我的自签名证书停止工作 .

    所有写在这里的东西再生都没有用 .

    UPDATE

    有机会确认我的方法今天有效:) . 如果它不起作用,请确保您使用此方法

    v3.ext
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = <specify-the-same-common-name-that-you-used-while-generating-csr-in-the-last-step>
    $
    

    从这里复制https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/

    END UPDATE

    终于能够看到绿色安全只有 removed 我的证书来自 system ,而 added 它才能 local 钥匙串 . (如果有的话 - 首先丢弃它) . 不确定它是否匹配,但在我的情况下,我通过chrome下载了证书,并确认创建日期是今天 - 所以它是我刚创建的那个 .

    希望有人花一天时间来帮助它 .

    永远不会更新铬!

相关问题