温馨提示×

如何在Debian上安装SSL证书

小樊
40
2025-12-09 10:31:25
栏目: 云计算

在 Debian 上安装与配置 SSL 证书的实用步骤


一 准备工作

  • 准备一个已解析到服务器公网 IP 的域名(如:example.comwww.example.com),并确保 Web 服务(ApacheNginx)已安装且可访问。
  • 开放防火墙端口:建议放行 HTTP(80)HTTPS(443);如使用 UFW,可执行:sudo ufw allow 'Apache Full'(或 Nginx 对应规则)。
  • 为后续手动配置生成 DH 参数(可选但推荐):sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
  • 确保域名 DNS 记录(A/AAAA)正确指向服务器,且 Web 根目录可被验证访问。

二 使用 Let’s Encrypt 与 Certbot 自动部署(推荐)

  • 安装 Certbot 及对应插件
    • Apache:sudo apt update && sudo apt install certbot python3-certbot-apache
    • Nginx:sudo apt update && sudo apt install certbot python3-certbot-nginx
  • 获取并安装证书(自动修改 Web 配置)
    • Apache:sudo certbot --apache -d example.com -d www.example.com
    • Nginx:sudo certbot --nginx -d example.com -d www.example.com
  • 设置自动续期
    • 查看定时器:sudo systemctl status certbot.timer
    • 测试续期:sudo certbot renew --dry-run
  • 验证
    • 访问 https://example.com 应显示锁标识;证书默认路径为:/etc/letsencrypt/live/example.com/fullchain.pem(证书链)与 /etc/letsencrypt/live/example.com/privkey.pem(私钥)。

三 手动部署已有或自签名证书

  • 放置证书文件(示例)
    • 将证书与私钥复制到系统证书目录:sudo cp example.com.crt /etc/ssl/certs/sudo cp example.com.key /etc/ssl/private/(如有多级中间证书,一并放置)。
  • Nginx 示例配置
    • 将 HTTP 重定向到 HTTPS,并在 443 端口启用 SSL:
      server {
          listen 80;
          server_name example.com www.example.com;
          return 301 https://$host$request_uri;
      }
      server {
          listen 443 ssl http2;
          server_name example.com www.example.com;
      
          ssl_certificate     /etc/ssl/certs/example.com.crt;
          ssl_certificate_key /etc/ssl/private/example.com.key;
          ssl_trusted_certificate /etc/ssl/certs/chain.pem;  # 如有中间证书
      
          ssl_protocols TLSv1.2 TLSv1.3;
          ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
                       ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
                       DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
          ssl_prefer_server_ciphers on;
      
          root /var/www/html;
          index index.html;
      }
      
    • 测试并重载:sudo nginx -t && sudo systemctl reload nginx
  • Apache 示例配置
    • 启用 SSL 模块与站点后,在虚拟主机中启用:
      <VirtualHost *:443>
          SSLEngine on
          SSLCertificateFile      /etc/ssl/certs/example.com.crt
          SSLCertificateKeyFile   /etc/ssl/private/example.com.key
          SSLCertificateChainFile /etc/ssl/certs/chain.pem  # 可选
          # 其他常规配置…
      </VirtualHost>
      
    • 启用站点并重载:sudo a2ensite your-site.conf && sudo systemctl reload apache2
  • 自签名证书(仅测试/内网)
    • 生成:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/selfsigned.key -out /etc/ssl/certs/selfsigned.crt
    • 按上述 Nginx/Apache 示例配置路径使用,浏览器会提示不受信任(正常)。

四 验证与常见问题

  • 连接与强度验证
    • 浏览器访问 https://example.com 检查锁标识;可用 SSL Labs Server Test 做强度与配置评估。
  • 续期与定时器
    • 证书有效期 90 天;建议保留 certbot renew --dry-run 定期自检;如使用定时器,确认 certbot.timer 处于 active 状态。
  • 防火墙与端口
    • 确保 80/443 已放行;UFW 可使用:sudo ufw allow 'Apache Full'(或 Nginx 对应项)。
  • 权限与路径
    • 私钥权限应为 600sudo chmod 600 /etc/ssl/private/*.key;证书与私钥路径需与 Web 配置一致。
  • 配置语法
    • Nginx:sudo nginx -t;Apache:sudo apache2ctl configtest,无误后再重载服务。

0