参考资料

  1. SSL证书的费用与成本
  2. Nginx SSL配置详解
  3. SSL证书的基本概念
  4. 如何管理多个SSL证书
  5. 过期的SSL证书
  6. 如何优化SSL性能
  7. windows ssl配置设置详细说明以及案例
  8. windows ssl设置详细说明以及案例

配置服务器强制使用 HTTPS

适用操作系统

  • Linux(如 Ubuntu、CentOS)

  • Windows Server

  • macOS Server

证书有效性

  1. 获取证书:从 Let's Encrypt、DigiCert 等 CA 获取 SSL/TLS 证书。

  2. 证书格式:通常为 .pem.crt(证书)和 .key(私钥)。

  3. 有效期:一般为 90 天(如 Let's Encrypt)至数年,需定期续订。

配置示例

1. Apache(Linux)

  • 编辑配置文件(如 /etc/apache2/sites-available/000-default.conf):

    <VirtualHost *:80>
        ServerName example.com
        Redirect permanent / https://example.com/
    </VirtualHost>
    
    <VirtualHost *:443>
        ServerName example.com
        SSLEngine on
        SSLCertificateFile /path/to/cert.pem
        SSLCertificateKeyFile /path/to/private.key
        SSLCertificateChainFile /path/to/chain.pem
    </VirtualHost>
  • 启用模块并重启:

    sudo a2enmod ssl
    sudo systemctl restart apache2

2. Nginx(Linux)

  • 编辑配置文件(如 /etc/nginx/sites-available/default):

    server {
        listen 80;
        server_name example.com;
        return 301 https://$server_name$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name example.com;
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/private.key;
        ssl_trusted_certificate /path/to/chain.pem;
    }
  • 重启服务:

    sudo systemctl restart nginx

3. IIS(Windows Server)

  • 使用“URL 重写”模块添加规则:

    • 模式:(.*)

    • 条件:{HTTPS} = off

    • 操作类型:重定向到 https://{HTTP_HOST}{REQUEST_URI}(状态码 301)。

调试与验证

  1. 检查重定向

    • 访问 http://example.com,应自动跳转到 https://

    • 使用 curl -I http://example.com 查看响应头(应有 301 Moved Permanently)。

  2. 证书验证

    • 使用浏览器检查证书有效性(无警告)。

    • 通过 SSL Labs 测试配置。

注意事项

  1. 混合内容:确保网页内所有资源(如图片、JS)均使用 https://,否则浏览器会警告。

  2. HSTS:启用 HTTP Strict Transport Security(HSTS)头以强制客户端始终使用 HTTPS:

    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
  3. 性能:启用 TLS 1.3 和 OCSP Stapling 以提升性能。

  4. 备份:配置前备份原始文件,避免服务中断。

  5. 防火墙:开放 443 端口(sudo ufw allow 443/tcp)。