文档中心
SSL鑷璇佷功澶氬煙鍚嶉厤缃寚鍗楀師鐞嗐€佹楠や笌椋庨櫓瑙勯伩
时间 : 2025-09-27 16:38:05浏览量 : 2
什么是SSL自签证书?

SSL自签证书就像你自己制作的一张"身份证",而不是由公安局(权威CA机构)颁发的。当网站使用这种证书时,浏览器会显示"不安全"警告,但它仍然能实现数据加密传输。我经常在内部测试环境见到这种情况——比如开发团队在测试新版电商网站时,临时使用自签证书来验证支付流程的加密功能。
为什么需要多域名自签证书?
想象一下你管理着公司内网多个系统:OA系统(oa.company.local)、邮件系统(mail.company.local)和CRM系统(crm.company.local)。如果每个系统都单独配置证书,管理起来会非常麻烦。多域名证书就像一把万能钥匙,可以同时打开多个门。去年我们给某客户做渗透测试时,就发现他们用了6个单独的自签证书,结果有3个因为忘记更新导致服务中断。
如何创建多域名自签证书?
基础准备
首先需要安装OpenSSL工具,这就像拿到一本空白护照和印章工具。在Linux上通常已经预装,Windows用户可以从官网下载。
关键步骤分解
1. 生成根CA(建立自己的发证机构)
```bash
openssl req -x509 -nodes -newkey rsa:2048 -keyout rootCA.key -out rootCA.crt -days 3650
```
这相当于成立自己的"小公安局",-days 3650表示10年有效期。上周有个客户设了36500天(100年),被我们审计时发现并纠正——过长有效期是重大安全隐患。
2. 创建CSR请求文件(填写申请表)
配置文件san.cnf内容示例:
```ini
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
[v3_req]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = shop.example.com
DNS.3 = api.example.com
特别注意subjectAltName部分,这里就是添加多个域名的关键位置。我见过最夸张的案例是一个配置文件里塞了50个域名,导致Nginx启动时报内存溢出错误。
3. 生成私钥和CSR
openssl req -new -nodes -out multidomain.csr -newkey rsa:2048 \
-keyout multidomain.key -config san.cnf
4. 用CA签署证书
openssl x509 -req -in multidomain.csr -CA rootCA.crt \
-CAkey rootCA.key -CAcreateserial -out multidomain.crt \
-days 365 -extensions v3_req -extfile san.cnf
服务器配置实例
Nginx配置片段
```nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/multidomain.crt;
ssl_certificate_key /path/to/multidomain.key;
强制TLS1.2以上版本(重要安全设置)
ssl_protocols TLSv1.2 TLSv1.3;
}
```
去年处理过一个事故:某企业虽然配置了多域名证书,但允许TLS1.0协议导致被中间人攻击。正确的协议限制能避免70%的SSL相关漏洞。
Apache配置片段
```apache
ServerName shop.example.com
SSLEngine on
SSLCertificateFile "/path/to/multidomain.crt"
SSLCertificateKeyFile "/path/to/multidomain.key"
HSTS头增强安全性(建议生产环境添加)
Header always set Strict-Transport-Security "max-age=63072000"
客户端信任问题解决方案
当你在Chrome看到"NET::ERR_CERT_AUTHORITY_INVALID"警告时:
1. Windows导入方法:
? 双击rootCA.crt → "安装证书" → "本地计算机"
? "将所有证书放入下列存储" → "受信任的根证书颁发机构"
2. macOS导入方法:
直接双击rootCA.crt → 钥匙串访问 → 将CA证书拖到"系统"钥匙串 → 右键选择"始终信任"
有个常见陷阱:某公司员工把CA证书导入到"当前用户"而非"本地计算机",结果其他用户访问时依然报错。正确的导入位置很关键!
安全风险与最佳实践
1. 密钥长度:现在绝对不要用1024位RSA密钥了!去年Logjam漏洞就利用了弱密钥问题。2048位是底线,有条件上ECC算法更佳。
2. 有效期管理:建议设置90天有效期并建立续期流程。我们曾发现某企业5年未更换的自签证书被离职员工私钥滥用的情况。
3. CRL/OCSP:虽然自签环境通常不配吊销列表,但对重要系统应考虑实现OCSP Stapling增强安全性。
4. 日志监控:记录所有SSL握手失败日志。有次我们发现某IP反复尝试TLS1.0连接,最终溯源到内网僵尸主机。
5. 替代方案考虑:
? Let's Encrypt免费证书(适合有公网DNS控制的场景)
? Windows AD CS(企业域环境理想选择)
最近帮一家医院迁移了他们用了8年的自签体系到AD CS方案后,运维效率提升了60%,安全性审计也更容易通过。
技术要点
制作多域名自签证书的核心在于:
1) SAN扩展字段的正确配置
2) CA签发时的扩展参数传递
3) 统一的客户端信任管理
记住一个原则:能用正规CA就别用自签名!但对于确实需要的内部环境,按本文规范操作可以最大限度降低风险。最后提醒:任何安全措施都要配套相应的管理制度——技术手段只是解决方案的一部分。
TAG:ssl自签证书多域名,ssl证书 子域名,ssl 自签名,ssl证书自签源码,自签ssl证书变为可信任