从最新的Chrome 60+开始,如果没有SAN,它会在HTTPS页面上抛出ERROR。 OpenSSL命令行不会添加这些扩展名。
答案 0 :(得分:2)
没关系,想通了自己。
OpenSSL CLI允许-subj
标志设置有关证书颁发机构(CA)的信息,但无法使用命令行添加主题备用名称(SAN)。所以我不得不求助于调用-config
,然后调用我想加载的文件作为简单配置。要创建自签名证书,这应该足够了,但不适用于生产:
# ./config/tiny_openssl.conf
[CA_default]
copy_extensions = copy
[req]
default_bits = 4096
prompt = no
default_md = sha256
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
[req_distinguished_name]
C = US
ST = Washington
L = Seattle
O = My Company
OU = IT Department
emailAddress = it@mycompany.com
CN = mycompany.com
[v3_ca]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
[alternate_names]
DNS.1 = localhost
DNS.2 = *.localhost
DNS.3 = app.localhost
# ...
[alternate_names]
值必须与生成的证书在SSL下提供的站点(或多个站点)的URL匹配。 localhost
或app.localhost
之类的内容可以使用。然后,我们使用此配置启动OpenSSL。
$ openssl req -x509 -newkey rsa:4096 -sha256 -utf8 -days 365 -nodes \
-config ./config/tiny_openssl.conf \
-keyout ./certificates/private.key \
-out ./certificates/ssl/certificate.crt
在Windows 10中将此.crt
文件添加为受信任的根证书颁发机构,重新启动Chrome和Web服务器,然后再进行操作。
如果您担心HTTP事务中的性能,可以将rsa
更改为2048
位。
这可能仅适用于服务器和浏览器之间的内部测试。如果您需要具有100%有效SSL证书的更完整和可靠的解决方案,您应该创建CA,CRS,然后使用该CA签署CRS,这将是一个有效的自签名证书: