如何使用http-server在本地正确配置TLS/SSL?解决证书报错
问题原因及解决步骤
1. MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY 错误原因
- 你生成的证书是CA证书类型,但实际需要的是服务器终端实体证书。CA证书的作用是签发其他证书,不能直接当作服务器身份证书使用,浏览器会拒绝将CA证书作为服务端证书校验。
2. NET::ERR_CERT_COMMON_NAME_INVALID 错误原因
- 证书的**通用名(CN)或主题备用名称(SAN)**未包含你访问的地址
127.0.0.1,浏览器校验证书时发现访问地址与证书绑定的地址不匹配,因此抛出该错误。
正确的OpenSSL证书生成步骤
第一步:生成CA根证书(用于签发服务器证书)
# 生成CA私钥 openssl genrsa -out ca.key 2048 # 生成CA证书,CN填写自定义CA名称,比如MyLocalCA openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt
将生成的ca.crt安装到Windows「受信任的根证书颁发机构」。
第二步:生成服务器私钥和证书签名请求(CSR)
# 生成服务器私钥 openssl genrsa -out server.key 2048 # 生成CSR,注意Common Name必须设为127.0.0.1 openssl req -new -key server.key -out server.csr
填写CSR信息时,Common Name(CN)必须设置为127.0.0.1,其他字段可随意填写。
第三步:创建SAN配置文件(适配现代浏览器要求)
新建san.cnf文件,内容如下:
[req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] CN = 127.0.0.1 [v3_req] keyUsage = keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] IP.1 = 127.0.0.1 # 若需要支持localhost访问,可添加以下行 # DNS.1 = localhost
第四步:用CA根证书签发服务器证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650 -sha256 -extfile san.cnf -extensions v3_req
第五步:启动http-server
将生成的server.key重命名为key.pem,server.crt重命名为cert.pem,然后启动服务:
http-server -S -C cert.pem -K key.pem
完成以上步骤后,即可正常访问https://127.0.0.1:8080。
内容的提问来源于stack exchange,提问作者goodUser
相关产品推荐
相关产品推荐

