【发布时间】: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
【问题讨论】:
-
你可能想看看here,它似乎和你的问题相似
-
您的终端实体/服务器证书格式错误。
CN=localhost是错误的。主机名始终位于 SAN 中。如果它出现在 CN 中,那么它也必须出现在 SAN 中(在这种情况下您必须列出两次)。更多规则和原因见How do you sign Certificate Signing Request with your Certification Authority和How to create a self-signed certificate with openssl? -
@jww CN = 通用名称,SAN 代表什么?
-
SAN 可能是
Subject Alternative Names
标签: node.js google-chrome express ssl-certificate