插件窝 干货文章 如何在Linux服务器上启用SSL加密以保护Web接口?

如何在Linux服务器上启用SSL加密以保护Web接口?

Nginx Certbot example 配置 700    来源:    2025-04-12

在Linux服务器上启用SSL加密保护Web接口的步骤如下,这里以Nginx和Let's Encrypt为例:

一、准备工作

  1. 确保拥有:
    • 服务器root权限
    • 已注册的域名(如example.com)
    • 域名DNS解析指向服务器IP
    • 防火墙开放443端口(HTTPS)

二、安装Nginx和Certbot

# Ubuntu/Debian
sudo apt update
sudo apt install nginx certbot python3-certbot-nginx

# CentOS/RHEL
sudo yum install nginx certbot python3-certbot-nginx

三、获取SSL证书(Let's Encrypt)

sudo certbot --nginx -d example.com -d www.example.com

按提示操作: 1. 输入邮箱(用于安全通知) 2. 同意服务条款 3. 选择是否共享邮箱(可选) 4. 自动完成验证和证书安装

四、Nginx配置调整

证书会自动配置,但建议检查/etc/nginx/sites-available/example.com

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # 安全强化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

    # 其他配置...
}

五、HTTP强制跳转HTTPS

在Nginx配置中添加:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

六、验证与重载

sudo nginx -t  # 测试配置
sudo systemctl reload nginx

七、证书自动续期

Let's Encrypt证书有效期为90天,设置自动续期:

sudo crontab -e

添加:

0 0 */7 * * certbot renew --quiet --post-hook "systemctl reload nginx"

八、验证SSL配置

使用工具检查: 1. 浏览器访问 https://example.com 2. 使用SSL Labs测试: bash curl https://www.ssllabs.com/ssltest/analyze.html?d=example.com

常见问题处理

  1. 证书申请失败

    • 检查域名解析是否生效
    • 确保80端口未被占用
    • 查看日志 /var/log/letsencrypt/letsencrypt.log
  2. 混合内容警告

    • 确保网页内所有资源(JS/CSS/图片)都使用HTTPS链接
  3. OCSP装订问题

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 1.1.1.1 valid=300s;
    

对于其他Web服务器(如Apache),步骤类似,只需替换为:

# Apache版Certbot
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d example.com

建议定期检查SSL配置安全性,可使用Mozilla的SSL配置生成器获取最新推荐配置。