【问题标题】:Chrome (net::ERR_CERT_COMMON_NAME_INVALID) errors on SSL self-signed certificateSSL 自签名证书上的 Chrome (net::ERR_CERT_COMMON_NAME_INVALID) 错误
【发布时间】:2017-08-06 13:45:20
【问题描述】:

我正在尝试在 Windows 10 上使用 Express.js 的自签名证书在 localhost 上设置一个站点。这是 Express.js 服务器代码。

index.js

const https = require('https')
const express = require('express')
const app = express()
const fs = require('fs')
const path = require('path')

const httpsOptions = {
    cert: fs.readFileSync(path.resolve(__dirname, 'ssl', 'ca.crt')),
    key: fs.readFileSync(path.resolve(__dirname, 'ssl', 'ca.key'))
}

const router = require('./router')

app.use('/people', router)

https.createServer(httpsOptions, app)
    .listen(3443)

我还将证书颁发机构 ca.crt 文件导入到 chrome,并重新启动了 chrome。但是我在chrome上仍然有错误,如下所示:

请指导如何解决这个问题 谢谢


我使用以下命令创建了密钥和证书。

# certificate authority key
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out ca.key

# server key
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out server.key

# certificate authority
openssl req -new -x509 -days 365 -key ca.key -subj "/CN=Test CA/O=Test Organization" -out ca.crt

# certificate signing request
openssl req -new -key server.key -subj "/CN=localhost/O=Test Organization" -out server.csr

# server certificate
openssl x509 -days 365 -req -in server.csr -CAcreateserial -CA ca.crt -CAkey ca.key -out server.crt

# verification
openssl verify -verbose -CAfile ca.crt server.crt

系统信息

  • OpenSSL:1.1.0e 2017 年 2 月 16 日
  • 节点:7.7.1
  • Windows 10

【问题讨论】:

标签: node.js google-chrome express ssl-certificate


【解决方案1】:

花了几个小时试图解决这个问题。以下方法对我有用:

创建一个配置文件(例如 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 = local.com
  [v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
  [alt_names]
DNS.1 = local.com
IP.1 = 127.0.0.1

然后生成证书和私钥

 openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout local.com.key -out local.com.crt -config req.cnf -sha256

【讨论】:

  • 此解决方案在 Windows 服务器中测试时对我不起作用。 chrome ERR_CERT_INVALID_COMMON_NAME 中仍然出现相同的错误
  • 这是让 Chrome 信任我的证书的正确魔法咒语 - 非常感谢!小建议 - 在使用 openssl 生成证书时,请将证书指定为 local.crt,因为默认情况下,Chrome 的证书导入向导会查找 *.cer *.crt,因此下一个人可能看不到他们的文件。
  • 其他提示:别忘了在 Chrome 中导入证书(设置,搜索 管理证书)在 Trusted Root Certification Authorities 然后重启 Chrome chrome://restart
猜你喜欢
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 2018-06-10
  • 2022-01-26
  • 1970-01-01
相关资源
最近更新 更多