问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何启用 HTTPS 并配置免费的 SSL 证书

创作时间:
作者:
@小白创作中心

如何启用 HTTPS 并配置免费的 SSL 证书

引用
CSDN
1.
https://blog.csdn.net/2409_89014517/article/details/146314445

HTTPS已成为现代网站安全性的基础要求。通过SSL/TLS证书对数据进行加密,不仅可以保护用户隐私,还能提升搜索引擎排名并增强用户信任。本文将详细介绍如何通过Let's Encrypt(免费、自动化的证书颁发机构)为您的网站启用HTTPS,并涵盖主流服务器(Nginx/Apache/IIS/Tomcat)的配置方法。

一、准备工作

  1. 域名所有权
    确保已拥有一个已解析到服务器IP的域名(如example.com)。

  2. 服务器权限
    需具备服务器的root或管理员权限。

  3. 开放端口
    确保服务器防火墙开放80(HTTP)和443(HTTPS)端口。

二、获取免费SSL证书(Let's Encrypt)

方法 1:使用 Certbot 自动化工具(推荐)

Certbot是Let's Encrypt官方推荐的证书管理工具,支持自动申请和续期。

# 安装 Certbot(以 Ubuntu 为例)
sudo apt update
sudo apt install certbot

# 申请证书(适用于 Nginx/Apache)
sudo certbot certonly --nginx # 如果使用 Nginx
sudo certbot certonly --apache # 如果使用 Apache

# 手动模式(适用于其他服务器)
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d www.example.com
  • 证书路径:/etc/letsencrypt/live/example.com/
    包含以下关键文件:
  • fullchain.pem: 证书链
  • privkey.pem: 私钥

方法 2:手动生成证书(适用于高级用户)

  1. 生成 CSR(证书签名请求)和私钥:
openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
  1. 通过 Let's Encrypt 或其他 ACME 客户端完成域名验证(DNS 或 HTTP 验证)。

三、配置服务器 SSL 证书

1. 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;
    # 启用 TLS 1.3 和现代加密套件
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers on;
    # 其他配置...
}

# 强制 HTTP 跳转到 HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

重启服务:

sudo systemctl restart nginx

2. Apache 配置示例

编辑虚拟主机文件(如 /etc/apache2/sites-available/example.com.conf):

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    # 启用 HSTS
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</VirtualHost>

# 重定向 HTTP 到 HTTPS
<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

启用模块并重启:

sudo a2enmod ssl
sudo systemctl restart apache2

3. IIS 配置(Windows Server)

  1. 打开 IIS 管理器 → 选择站点 → 绑定 → 添加 HTTPS 绑定。

  2. 导入证书:

  • fullchain.pemprivkey.pem 合并为 PFX 格式:
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in fullchain.pem
  • 在 IIS 中选择导入的 PFX 文件,并设置密码。

4. Tomcat 配置(Java 环境)

编辑 server.xml

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateFile="/path/to/fullchain.pem"
            certificateKeyFile="/path/to/privkey.pem"
            type="RSA" />
    </SSLHostConfig>
</Connector>

四、证书自动续期

Let's Encrypt 证书有效期为 90 天,需定期续期。

# 测试续期命令
sudo certbot renew --dry-run

# 添加定时任务(crontab -e)
0 3 * * * /usr/bin/certbot renew --quiet

五、验证与故障排除

  1. 在线检测工具
  • SSL Labs Test
  • Why No Padlock?
  1. 常见错误
  • 证书不信任:确保证书链完整(包含中间证书)。
  • 混合内容警告:页面内资源(如图片、JS)必须全部使用 HTTPS。
  • 端口冲突:确保没有其他进程占用 80/443 端口。

六、总结

通过 Let's Encrypt 和自动化工具,您可以零成本实现 HTTPS 的部署。定期检查证书状态、启用 HSTS 和保持加密套件的更新是维持安全性的关键步骤。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号