ssl新闻资讯

文档中心

Apache鏈嶅姟鍣ㄥ浣曢儴缃插涓猄SL璇佷功锛熶竴鏂囧浼氬绔欑偣HTTPS閰嶇疆

时间 : 2025-09-27 15:41:29浏览量 : 2

2Apache鏈嶅姟鍣ㄥ浣曢儴缃插涓猄SL璇佷功锛熶竴鏂囧浼氬绔欑偣HTTPS閰嶇疆

在今天的互联网环境中,HTTPS已经成为网站安全的基本要求。对于运维人员来说,如何在Apache服务器上为多个网站配置不同的SSL证书是一个常见需求。本文将用通俗易懂的方式,结合具体实例,带你一步步掌握Apache多SSL证书部署的技巧。

一、为什么需要多个SSL证书?

想象一下你有一栋大楼(服务器),里面有多家公司(网站)办公。如果只用一个大门钥匙(单SSL证书),所有公司共用一把钥匙显然不安全。专业的做法是给每家公司配独立的门禁系统(独立SSL证书)。这样即使一家公司的钥匙丢了,也不会影响其他公司的安全。

实际场景举例:

- 你运营着shop.example.com和blog.example.com两个子域名

- 客户要求api.example.com使用企业级EV证书

- 旧版legacy.example.com还需要保持兼容老式加密算法

二、准备工作:了解SNI技术

传统HTTPS有个限制:浏览器在握手阶段才发送域名信息,导致服务器无法提前知道该返回哪个证书。这就像客人敲门时不说自己是谁,管家不知道该拿哪把钥匙开门。

SNI(Server Name Indication)技术解决了这个问题:

1. 浏览器会在握手时明确说:"我要访问shop.example.com"

2. Apache根据这个提示选择对应的证书

3. 现代浏览器都支持SNI(IE7+、Chrome5+等)

查看Apache是否支持SNI:

```bash

httpd -v | grep -i ssl

需要看到mod_ssl模块

```

三、具体配置步骤(带实例)

假设我们有两个网站:

1. 电商站:/var/www/shop (域名shop.example.com)

2. 博客站:/var/www/blog (域名blog.example.com)

步骤1:准备证书文件

每个网站需要:

- 证书文件:shop.crt / blog.crt

- 私钥文件:shop.key / blog.key

- CA中间证书:intermediate.crt(通常由CA提供)

建议整理目录结构:

/etc/ssl/

├── shop/

│ ├── shop.crt

│ ├── shop.key

│ └── intermediate.crt

└── blog/

├── blog.crt

├── blog.key

└── intermediate.crt

步骤2:修改Apache配置

典型虚拟主机配置示例:

```apacheconf

电商站点配置

ServerName shop.example.com

DocumentRoot /var/www/shop

SSLEngine on

SSLCertificateFile /etc/ssl/shop/shop.crt

SSLCertificateKeyFile /etc/ssl/shop/shop.key

SSLCertificateChainFile /etc/ssl/shop/intermediate.crt

强制HTTPS跳转

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

博客站点配置

ServerName blog.example.com

DocumentRoot /var/www/blog

SSLCertificateFile /etc/ssl/blog/blog.crt

SSLCertificateKeyFile /etc/ssl/blog/blog.key

SSLCertificateChainFile /etc/ssl/blog/intermediate.crt

HSTS安全增强头

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

步骤3:测试与验证

1. 语法检查

apachectl configtest

2. 重启服务

```bash

systemctl restart httpd

3. 在线检测工具

- SSL Labs测试:https://www.ssllabs.com/ssltest/

- Chrome开发者工具 → Security标签页

四、常见问题解决方案

问题1:访问时报"SSL_ERROR_BAD_CERT_DOMAIN"

- ?检查ServerName是否与证书域名完全匹配

- ?通配符证书要确认覆盖范围(*.example.com不包含example.com)

问题2:老版本Android提示证书错误

- ?不要关闭SNI

- ?确保中间证书正确链式拼接

- ?考虑购买兼容性更好的CA机构证书

问题3:如何优化性能?

```apacheconf

OCSP装订加速握手过程

SSLUseStapling on

SSLStaplingCache "shmcb:logs/stapling_cache(128000)"

五、进阶技巧

1. 自动续期方案(Let's Encrypt示例):

certbot renew --pre-hook "systemctl stop httpd" \

--post-hook "systemctl start httpd"

2. 混合使用不同CA的证书

- API站点用DigiCert企业级证书

- Blog用免费Let's Encrypt证书

(配置方法完全相同)

3. IP地址不够用时

IP相同但端口不同时可用方案

Listen 44300

...其他配置相同...

六、安全最佳实践

1. 私钥保护三原则

- chmod 400所有.key文件

- auditd监控密钥目录访问

- Never share keys via email

2. 密码套件推荐设置

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH

SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

通过以上步骤,你的Apache服务器就能专业地管理多个SSL证书了。记住定期检查日志中的TLS错误信息,保持加密套件更新,这样才能构建既灵活又安全的Web服务环境。

TAG:apache部署多个ssl证书,apache2 ssl,apache配置ssl证书,apache2安装ssl证书,apache配置多个域名,apache配置多个端口