1

我正在创建一个本地应用程序,该应用程序在 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。

4

1 回答 1

2

我遵循了@jww 的建议,并重新编写了我的配置文件,如下所示:

[ 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
IP.1 = 127.0.0.1

然后我使用这个命令来生成我的证书。

签名请求:openssl req -out myrequest.csr -newkey rsa:2048 -nodes -keyout mykey.key -config myconfig.conf

使用我的 CA 签名:openssl x509 -req -in myrequest.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out mycertificate.crt -days 36500 -sha256

所以问题实际上是我将端口号添加到我的证书签名请求的 IP 和 DNS 地址中。

于 2017-12-18T11:45:06.017 回答