OpenSSL多域名自签名证书提取-subj与-addext参数至配置文件可行性问询
多域名自签名SSL证书参数抽离方案
该操作完全可行,将-subj、-addext参数抽离到独立OpenSSL配置文件是处理多域名证书的最优方案,可有效避免命令行参数过长、书写错误的问题,非常适合你当前30个域名的使用场景。
步骤1:创建独立OpenSSL配置文件
新建文件命名为openssl-san.conf,写入以下配置内容:
[req] default_bits = 4096 prompt = no default_md = sha256 distinguished_name = dn x509_extensions = v3_req [dn] # 通用名仅需填写1个主域名即可,禁止填写多个域名 CN = *.local.dev.lat.com [v3_req] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] # 按序号连续填写所有域名,每个域名同时覆盖通配符和裸域名 DNS.1 = *.local.dev.lat.com DNS.2 = local.dev.lat.com DNS.3 = *.local.dev.bet.com DNS.4 = local.dev.bet.com DNS.5 = *.local.dev.cat.com DNS.6 = local.dev.cat.com DNS.7 = *.local.dev.mon.com DNS.8 = local.dev.mon.com DNS.9 = *.local.dev.pop.com DNS.10 = local.dev.pop.com # 剩余25个域名按序号连续往下补充即可 IP.1 = 127.0.0.1
步骤2:使用配置文件生成证书
直接执行简化后的openssl命令即可:
openssl req -x509 -newkey rsa:4096 -days 3650 -nodes \ -keyout server.key \ -out server.crt \ -config openssl-san.conf
注意事项
- 你原命令中
-subj参数填写多个域名的写法是错误的,证书通用名(CN)仅支持填写单个域名,所有多域名必须放在subjectAltName字段中才能被浏览器正常识别 - 配置文件中
alt_names段的序号必须连续不中断,否则openssl会直接忽略序号断裂后的所有域名 - 生成的证书需要导入本地系统/浏览器的受信任根证书列表,才能避免不安全提示
内容的提问来源于stack exchange,提问作者Slavik Muz
相关产品推荐
相关产品推荐

