Ssl 正在为域和子域创建自签名证书-NET::ERR\u CERT\u COMMON\u NAME\u无效

Ssl 正在为域和子域创建自签名证书-NET::ERR\u CERT\u COMMON\u NAME\u无效,ssl,dns,openssl,windows-7-x64,Ssl,Dns,Openssl,Windows 7 X64,我按照教程在Windows上创建签名SSL证书以进行开发,它对我的一个域非常有效(我使用hosts文件模拟dns)。然后我发现我有很多子域,为每个子域创建一个证书是一件很麻烦的事。因此,我尝试在Common字段中使用通配符创建一个证书,正如在serverfault的一些答案中所建议的那样。像这样: Common Name: *.myserver.net/CN=myserver.net 但是,在将此证书导入受信任的根证书颁发机构后,我在Chrome中获得了NET::ERR\u CERT\u CO

我按照教程在Windows上创建签名SSL证书以进行开发,它对我的一个域非常有效(我使用hosts文件模拟dns)。然后我发现我有很多子域,为每个子域创建一个证书是一件很麻烦的事。因此,我尝试在
Common
字段中使用通配符创建一个证书,正如在serverfault的一些答案中所建议的那样。像这样:

Common Name: *.myserver.net/CN=myserver.net
但是,在将此证书导入受信任的根证书颁发机构后,我在Chrome中获得了
NET::ERR\u CERT\u COMMON\u NAME\u INVALID
错误,例如:
https://sub1.myserver.net
https://myserver.net

此服务器无法证明它是myserver.net;其安全证书 来自*.myserver.net/CN=myserver.net

这可能是由于配置错误或攻击者拦截您的连接造成的


公共名称字段中是否存在导致此错误的错误?

我认为这可能是chrome中的错误。很久以前也有类似的问题:


在其他浏览器中尝试。我认为它应该可以正常工作。

正如Rahul所说,它是一种常见的Chrome和OSX bug。我过去也有类似的问题。事实上,在测试本地站点的工作时,我终于厌倦了2次[是的,我知道没有多少次]额外的点击。

至于[使用Windows]解决此问题的可能方法,我将使用其中一个。


  • 在Chrome Certificate Manager中导入证书
    注意:一旦谷歌解决了这个错误,第3步将解决遇到的问题。考虑到时间已经过时,在可预见的未来没有ETA。**

    虽然我更喜欢使用Chrome进行开发,但我最近发现自己陷入了困境。没有这个问题。

    希望这有帮助:)

  • 解决方法是添加用作“subjectAltName”(X509v3 Subject备用名称)的域名。这可以通过更改OpenSSL配置(Linux上的
    /etc/ssl/OpenSSL.cnf
    )并修改
    v3_req
    部分来实现:

    [ 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
    开关。(另请参见)

    您的通配符
    *.example.com
    不覆盖根域
    example.com
    ,但将覆盖子域上的任何变量,如
    www.example.com
    test.example.com

    首选的方法是建立受试者的备选名称,如中所示,但请记住,Chrome目前要求将通用名称作为受试者备选名称之一额外列出(正如他的答案中正确说明的那样)。我最近发现了这个问题,因为我在SANs
    www.example.com
    test.example.com
    中使用了公共名称
    example.com
    ,但从Chrome得到了
    NET::ERR\u CERT\u Common\u Name\u INVALID
    警告。我必须以
    example.com
    作为公共名称和SAN之一生成一个新的证书签名请求。然后Chrome完全信任证书。别忘了将根证书导入Chrome,作为识别网站的可信机构。

    Chrome 58有


    向前看,这可能是您遇到此错误的另一个原因。

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

    作为一种解决方法,可以创建一个Windows注册表项,允许Google Chrome在证书缺少subjectAlternativeName扩展名时使用服务器证书的commonName来匹配主机名,只要它成功验证并链接到本地安装的CA证书

    数据类型:布尔[Windows:REG\u DWORD] Windows注册表位置:HKEY\U LOCAL\U MACHINE\SOFTWARE\Policys\Google\Chrome Windows/Mac/Linux/Android首选项名称:EnableCommonNameFallbackForLocalAnchors 值:0x00000001(Windows)、true(Linux)、true(Android)、(Mac) 要创建Windows注册表项,只需执行以下步骤:

    打开记事本 将以下内容复制并粘贴到记事本中 Windows注册表编辑器5.00版

    [HKEY\U LOCAL\U MACHINE\SOFTWARE\Policys\Google\Chrome] “EnableCommonNameFallBackorLocalanchors”=dword:00000001 转到文件>另存为 Filename:any_Filename.reg 另存为类型:所有文件

    选择文件的首选位置

    点击保存

    双击要运行的已保存文件

    在注册表编辑器警告中单击Yes

    在Symantec支持页面上找到以下信息:

    创建
    openssl.conf
    文件:

    [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
    
    运行此命令并:

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

    输出文件
    app.crt
    app.key
    对我来说很有用。

    对于遇到这种情况并想接受风险测试的每个人来说,有一个解决方案:在Chrome中转到匿名模式,您将能够打开“高级”并单击“继续到某个.url”

    如果您需要检查一些您正在维护的网站,并且只是作为开发人员进行测试(并且当您还没有配置正确的开发证书时),这将非常有用


    当然,这不适用于在生产中使用网站的人,因为该错误表明网站安全存在问题。

    在创建PWA进行本地开发和测试时,提供的答案对我(Chrome或Firefox)不起作用。请勿用于生产!我能够使用以下工具:

  • 具有以下选项的联机站点:
    • 通用名称:添加系统的“本地主机”和IP,例如192.168.1.12