关于ssl:如何使用SAN创建OpenSSL自签名证书?

How to create an OpenSSL Self-Signed Certificate using SAN?

本问题已经有最佳答案,请猛点这里访问。

从最新版本的Chrome 60开始,如果没有SAN,它将在HTTPS页面上引发错误。 OpenSSL命令行不添加这些扩展名。


没关系,弄清楚自己。

OpenSSL CLI允许-subj标志设置有关证书颁发机构(CA)的信息,但是无法使用命令行添加主题备用名称(SAN)。因此,我不得不求助于调用-config,然后调用要加载为简单配置的文件。对于创建自签名证书,这应该足够,但不能用于生产:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# ./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 = [email protected]
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相匹配。 localhostapp.localhost之类的东西都可以工作。然后,我们使用此配置启动OpenSSL。

1
2
3
4
$ 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进行签名,这将得出一个有效的自签名证书:

https://stackoverflow.com/a/21494483/647490