我正在创建一个本地应用程序,该应用程序在 localhost:8080 地址中启动一个网络服务器。我正在尝试为它创建一个证书,以便我可以使用 HTTPS 访问它,但我很难做到这一点。
首先,我创建了自己的 CA,然后使用 localhost:8080 通用名称创建了一个证书。然后,我将我的 CA 添加到计算机上的受信任机构(顺便说一下,我使用的是 Windows 10),但是当我打开我的网站时,我使用 Firefox 和 Chrome 遇到了 BAD_CERT_DOMAIN 错误。
我还尝试使用 127.0.0.1:8080 作为通用名称创建另一个证书,但它也没有用。
我做错了什么?这些浏览器是否总是拒绝以 localhost 作为 CN 的证书?
更新
我创建了一个这样的配置文件:
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
organizationName = Organization Name (eg, company)
commonName = Common Name (e.g. server FQDN or YOUR name)
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
DNS.2 = localhost:8080
DNS.3 = localhost:12125
DNS.4 = localhost:12126
DNS.5 = 127.0.0.1:8080
DNS.6 = 127.0.0.1:12125
DNS.7 = 127.0.0.1:12126
DNS.8 = 127.0.0.1
IP.1 = 127.0.0.1
这些是我用来生成证书的命令:
签名请求:openssl req -out myrequest.csr -newkey rsa:2048 -nodes -keyout mykey.key -config myconfig.conf
当我运行这个命令时,CN = localhost 127.0.0.1
使用我的 CA 签名:openssl x509 -req -in myrequest.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out mycertificate.crt -days 36500 -sha256
但是,即使在我告诉他们信任我自己的 CA 之后,我仍然会为 Firefox 和 Google Chrome 获得 BAD_CERT_DOMAIN。