摘要:在OpenSSL中指定域名及相关操作的核心要点如下:1. 生成证书签名请求(CSR)时指定域名 - 使用`-subj`参数指定主题信息,包含域名(如`CN=example.com`)。例如: openssl req -new -key private.key -out request.csr -subj "/CN=example.com" ...
在OpenSSL中指定域名及相关操作的核心要点如下:
1. 生成证书签名请求(CSR)时指定域名
- 使用`-subj`参数指定主题信息,包含域名(如`CN=example.com`)。例如:
openssl req -new -key private.key -out request.csr -subj "/CN=example.com"
- 若需包含多域名或子域名(多域名主机),需通过`openssl.cnf`配置文件定义`subjectAltName`扩展,例如`DNS:example.com, DNS:*.example.com`。
2. 自签名证书绑定域名
- 生成自签名证书时,通过`-addext`参数添加域名主机信息(需OpenSSL 1.1.1+):
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com"
3. 验证证书中的域名信息
- 使用以下命令检查证书是否包含目标域名:
openssl x509 -in cert.pem -text -noout | grep -E "DNS|CN="
输出应显示证书的`Common Name (CN)`和`subjectAltName`中的域名主机列表。
4. SAN扩展的配置文件用法
- 创建包含多域名的配置文件(如`san.cnf`),定义`req_extensions`和`subjectAltName`:
[req]
req_extensions = v3_req
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
生成CSR时引用该文件:
openssl req -new -key private.key -out request.csr -config san.cnf
5. HTTPS服务中的域名匹配规则
- 浏览器会根据证书中的`subjectAltName`优先验证域名,而非传统的`Common Name`。若域名主机未在SAN中列出,可能触发安全警告。
6. 通配符域名的支持
- OpenSSL允许通过`DNS:*.example.com`形式支持通配符域名,覆盖所有同级子域名,但仅匹配单层(如`a.example.com`,不匹配`a.b.example.com`)。
7. 域名与IP的混合指定
- `subjectAltName`可同时包含域名和IP,例如:
subjectAltName = DNS:example.com, IP:192.168.1.1
扩展知识
SNI(Server Name Indication):现代TLS协议通过SNI扩展实现单IP托管多域名主机,要求证书包含对应域名列表。
证书透明度(CT):CA机构颁发的域名证书需公开记录,防止恶意签发未授权的域名证书。
HSTS预加载:域名可提交至浏览器HSTS列表,强制HTTPS连接,避免降级攻击。
实际操作中需确保域名主机的完整性和一致性,避免因配置错误导致证书不被信任。