OpenSSL生成多域名SSL证书全流程解析
一、生成前的准备工作
在生成多域名SSL证书前,需确保已安装OpenSSL工具,并创建以下目录结构用于存放证书文件:
/etc/httpd/ca
用于存储CA证书和密钥/etc/pki/tls/certs
存放服务器证书/etc/pki/tls/private
存放私钥文件
二、SAN配置文件解析
创建san.cnf
配置文件,指定多域名和IP地址:
[req] distinguished_name = req_distinguished_name req_extensions = v3_req [v3_req] subjectAltName = @alt_names [alt_names] DNS.1 = domain1.com DNS.2 = domain2.net IP.1 = 192.168.1.100
该配置文件通过subjectAltName
扩展字段支持同时定义域名和IP地址,每个条目需单独编号。
三、生成根证书与服务器证书
完整生成流程如下:
- 生成CA私钥:
openssl genrsa -out ca.key 2048
- 创建自签名CA证书:
openssl req -x509 -new -key ca.key -out ca.crt -days 3650
- 生成服务器私钥:
openssl genrsa -out server.key 2048
- 生成CSR请求文件:
openssl req -new -key server.key -out server.csr -config san.cnf
- 签发服务器证书:
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -out server.crt -days 365 -extfile san.cnf
四、证书部署与验证
部署到Nginx的示例配置:
server { listen 443 ssl; ssl_certificate /etc/pki/tls/certs/server.crt; ssl_certificate_key /etc/pki/tls/private/server.key; }
验证命令:openssl x509 -in server.crt -text -noout
可查看SAN扩展字段信息。
通过配置SAN扩展字段和标准化签发流程,可快速生成支持多域名的SSL证书。建议将有效期设置为2-10年,密钥长度至少2048位,并定期更新CA根证书。