关于ssl:为域和子域创建自签名证书 – NET :: ERR_CERT_COMMON_NAME_INVALID

Creating self signed certificate for domain and subdomains - NET::ERR_CERT_COMMON_NAME_INVALID

我按照本教程在Windows上创建签名SSL证书用于开发目的,并且它适用于我的一个域(我使用hosts文件来模拟dns)。 然后我发现我有很多子域名,为每个子域名创建证书会很麻烦。 所以我尝试在Common字段中使用通配符创建证书,如serverfault的一些答案中所建议的那样。 像这样:

1
Common Name: *.myserver.net/CN=myserver.net

但是,在将此证书导入受信任的根证书颁发机构后,Chrome在主域及其所有子域中出现NET::ERR_CERT_COMMON_NAME_INVALID错误,例如:https://sub1.myserver.nethttps://myserver.net

This server could not prove that it is myserver.net; its security certificate
is from *.myserver.net/CN=myserver.net.

This may be caused by a misconfiguration or an attacker intercepting your connection.

Common Name字段中是否有错误导致此错误?


Chrome 58已经放弃了对没有主题备用名称的证书的支持。

继续前进,这可能是您遇到此错误的另一个原因。


解决方法是将您使用的域名添加为"subjectAltName"(X509v3使用者替代名称)。这可以通过更改OpenSSL配置(Linux上的/etc/ssl/openssl.cnf)并将v3_req部分修改为如下所示来完成:

1
2
3
4
5
6
7
8
9
10
11
[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = myserver.net
DNS.2 = sub1.myserver.net

有了这个,在生成新证书时不要忘记使用-extensions v3_req开关。 (另请参阅如何使用OpenSSL生成带有SubjectAltName的自签名证书?)


正如Rahul所说,这是一个常见的Chrome和OSX错误。我过去遇到过类似的问题。事实上,我最终厌倦了在测试本地网站工作时使2 [是的我知道并不多]额外点击。

至于这个问题的可能解决方法[使用Windows],我会使用许多自签名证书实用程序之一。

推荐步骤:

  • 创建自签名证书
  • 将证书导入Windows证书管理器
  • 在Chrome证书管理器中导入证书
    注意:第3步将解决Google解决该问题后遇到的问题...考虑到在可预见的将来没有ETA的时间已经过时。**
    < br />尽管我更喜欢使用Chrome进行开发,但最近我发现自己处于Firefox Developer Edition中。哪个没有这个问题。

    希望这有帮助:)


  • 创建openssl.conf文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    [req]
    default_bits = 2048
    default_keyfile = oats.key
    encrypt_key = no
    utf8 = yes
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no

    [req_distinguished_name]
    C = US
    ST = Cary
    L = Cary
    O  = BigCompany
    CN = *.myserver.net

    [v3_req]
    keyUsage = critical, digitalSignature, keyAgreement
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names

    [alt_names]
    DNS.1 = myserver.net
    DNS.2 = *.myserver.net

    运行此命令:

    1
    openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout app.key -out app.crt  -config openssl.conf

    输出文件app.crtapp.key适合我。


    您的通配符*.example.com不包含根域example.com,但会涵盖子域中的任何变体,例如www.example.comtest.example.com

    首选方法是在Fabian的答案中建立主题备用名称,但请记住,Chrome目前要求将公共名称另外列为主题备用名称之一(正如他在答案中正确演示的那样)。我最近发现了这个问题,因为我有SANs www.example.comtest.example.com的公共名称example.com,但是从Chrome获得了NET::ERR_CERT_COMMON_NAME_INVALID警告。我必须使用example.com生成一个新的证书签名请求作为公共名称和一个SAN。然后Chrome完全信任该证书。不要忘记将根证书导入Chrome,作为识别网站的可信任机构。


    我认为这可能是chrome中的一个bug。长期存在类似的问题:
    看到这个。

    尝试使用其他浏览器。我认为它应该工作正常。


    对于遇到此问题且希望接受测试风险的每个人,都有一个解决方案:转到Chrome中的隐身模式,您就可以打开"高级",然后点击"继续进入some.url"。

    如果您需要检查自己维护的某个网站并且只是作为开发人员进行测试(以及当您尚未配置适当的开发证书时),这将非常有用。

    当然,这不是为了使用生产网站的人,这个错误表明网站安全存在问题。


    如果你厌倦了这个错误。你可以让Chrome不这样做。我不是说这是最好的方式,只是说它是一种方式。

    As a workaround, a Windows registry key can be created to allow Google Chrome to use the commonName of a server certificate to match a hostname if the certificate is missing a subjectAlternativeName extension, as long as it successfully validates and chains to a locally-installed CA certificates.

    Data type: Boolean [Windows:REG_DWORD]
    Windows registry location: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome
    Windows/Mac/Linux/Android preference name: EnableCommonNameFallbackForLocalAnchors
    Value: 0x00000001 (Windows), true(Linux), true (Android), (Mac)
    To create a Windows registry key, simply follow these steps:

    Open Notepad
    Copy and paste the following content into notepad
    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
    "EnableCommonNameFallbackForLocalAnchors"=dword:00000001
    Go to File > Save as
    Filename: any_filename.reg
    Save as type: All Files

    Select a preferred location for the file

    Click on Save

    Double click on the saved file to run

    Click on Yes on the Registry Editor warning

    在Symantec支持页面上找到此信息:
    https://support.symantec.com/en_US/article.TECH240507.html