参考资料

  1. SSL证书与HTTPS的关系
  2. SSL证书的必要性
  3. nginx ssl证书配置步骤详细说明以及案例
  4. ssl证书不受信任问题详解
  5. 为什么需要SSL证书
  6. SSL配置的进阶问题
  7. nginx手动配置ssl详细说明以及案例
  8. Windows服务器SSL配置

Apache服务器SSL配置

1. 详细说明介绍

SSL(Secure Sockets Layer)用于在Apache服务器和客户端之间建立加密连接。通过配置SSL,可以保护数据传输的安全性,防止中间人攻击和数据泄露。

2. 适用操作系统

  • Linux(如Ubuntu、CentOS、Debian等)

  • Windows Server

  • macOS(开发环境)

3. 证书有效性

  • 证书类型:通常使用TLS证书(如Let's Encrypt、商业CA颁发的证书)。

  • 有效期:一般为90天(Let's Encrypt)至1-2年(商业证书)。

  • 验证方式:域名验证(DV)、组织验证(OV)、扩展验证(EV)。

4. 配置示例(以Ubuntu为例)

步骤1:安装Apache和SSL模块

sudo apt update
sudo apt install apache2
sudo a2enmod ssl
sudo systemctl restart apache2

步骤2:生成或获取证书

  • 使用Let's Encrypt(推荐):

sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d example.com
  • 手动配置证书:
    将证书文件(如example.com.crtexample.com.key)放入/etc/apache2/ssl/目录。

步骤3:配置虚拟主机
编辑/etc/apache2/sites-available/default-ssl.conf

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/example.com.crt
    SSLCertificateKeyFile /etc/apache2/ssl/example.com.key
    SSLCertificateChainFile /etc/apache2/ssl/chain.crt

    # 其他配置...
</VirtualHost>

步骤4:启用SSL站点并重启Apache

sudo a2ensite default-ssl
sudo systemctl restart apache2

5. 调试与验证

  • 检查语法错误

sudo apache2ctl configtest
  • 验证SSL连接
    使用浏览器访问https://example.com,或通过工具:

openssl s_client -connect example.com:443 -servername example.com
  • 检查证书链

openssl x509 -in /etc/apache2/ssl/example.com.crt -text -noout

6. 注意事项

  • 证书更新:定期更新证书(尤其是Let's Encrypt的90天有效期)。

  • 加密套件:禁用不安全的加密套件(如SSLv3、RC4)。

  • HSTS:启用HTTP严格传输安全(HSTS)以增强安全性。

  • 防火墙:确保防火墙允许443端口(HTTPS)的流量。

  • 日志监控:定期检查Apache错误日志(/var/log/apache2/error.log)排查问题。