文章

生成自签名的多泛域名证书

随着 HTTPS 的普及,很多场景需要通过 HTTPS 进行测试验证。这里提供的解决方案是自签名任意域名(包括泛域名)证书,优点是可以通过简单易记的域名一劳永逸解决域名+证书问题,缺点是只能内网使用。

生成证书

配置证书

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
31
32
33
34
35
36
37
38
39
40
41
42
[req]
default_bits        = 2048
default_keyfile     = server-key.pem
distinguished_name  = subject
req_extensions      = req_ext
x509_extensions     = x509_ext
string_mask         = utf8only

[subject]
countryName                 = Country Name (2 letter code)
countryName_default         = CN
stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = Guangdong
localityName                = Locality Name (eg, city)
localityName_default        = Shenzhen
organizationName            = Organization Name (eg, company)
organizationName_default    = Jinman,Lai
commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_default          = laijinman
emailAddress                = Email Address
emailAddress_default        = admin@laijinman.com

[x509_ext]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints       = CA:FALSE
keyUsage               = digitalSignature, keyEncipherment
subjectAltName         = @alternate_names
nsComment              = "OpenSSL Generated Certificate"

[req_ext]
subjectKeyIdentifier = hash
basicConstraints     = CA:FALSE
keyUsage             = digitalSignature, keyEncipherment
subjectAltName       = @alternate_names
nsComment            = "OpenSSL Generated Certificate"

[alternate_names]
DNS.1 = laijinman.dev
DNS.2 = *.laijinman.dev
DNS.3 = laijinman.localhost
DNS.4 = *.laijinman.localhost

创建证书

1
openssl req -config laijinman.cnf -new -sha256 -newkey rsa:2048 -nodes -keyout laijinman.key -x509 -days 3650 -out laijinman.crt

一路回车Enter

服务器配置

Nginx

1
2
ssl_certificate      /data/ssl/laijinman.crt;
ssl_certificate_key  /data/ssl/laijinman.key;

需要开通 HTTPS 访问的域名添加上listen 443 ssl;即可。

客户端配置

Mac OS

  • 通过浏览器访问域名,提示证书不安全。在浏览器查看并导出证书到本地;
  • 双击证书,通过私匙串访问打开并导入证书;
  • 在私匙串访问双击导入证书,设置信任-使用此证书时:始终信任。

Windows

  • 通过浏览器访问域名,提示证书不安全。在浏览器查看并导出证书到本地;
  • 双击证书,点击安装证书,按提示进行即可。
本文由作者按照 CC BY 4.0 进行授权