当前位置: 首页 > article >正文

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

引言

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 官方推荐的证书管理工具,支持自动申请和续期。

bash

复制

# 安装 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(证书签名请求)和私钥:

    bash

    复制

    openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
  2. 通过 Let's Encrypt 或其他 ACME 客户端完成域名验证(DNS 或 HTTP 验证)。


三、配置服务器 SSL 证书

1. Nginx 配置示例

编辑站点配置文件(如 /etc/nginx/sites-available/example.com):

nginx

复制

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;
}

重启服务:

bash

复制

sudo systemctl restart nginx

2. Apache 配置示例

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

apache

复制

<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>

启用模块并重启:

bash

复制

sudo a2enmod ssl
sudo systemctl restart apache2

3. IIS 配置(Windows Server)

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

  2. 导入证书:

    • 将 fullchain.pem 和 privkey.pem 合并为 PFX 格式:

      bash

      复制

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

4. Tomcat 配置(Java 环境)

编辑 server.xml

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>

运行 HTML


四、证书自动续期

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

bash

复制

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

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

五、验证与故障排除

  1. 在线检测工具

    • SSL Labs Test

    • Why No Padlock?

  2. 常见错误

    • 证书不信任:确保证书链完整(包含中间证书)。

    • 混合内容警告:页面内资源(如图片、JS)必须全部使用 HTTPS。

    • 端口冲突:确保没有其他进程占用 80/443 端口。


六、总结

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


http://www.kler.cn/a/590559.html

相关文章:

  • MySQL DBA 运维常用命令
  • STC89C52单片机学习——第22节: LED点阵屏显示图形动画
  • Spring Boot整合JWT 实现双Token机制
  • Maven核心包:maven-resolver-api
  • Netty基础—5.Netty的使用简介
  • 小程序主包方法迁移到分包-调用策略
  • HTB 学习笔记 【中/英】《前端 vs. 后端》P3
  • API接口自动化学习总结
  • 共享 IP 与独立 IP:长期邮件营销的优劣比较
  • 解决QT_Debug 调试信息不输出问题
  • 【笔记】SQL进阶教程(第二版)
  • SpringBoot3+SaToken+JWT:轻量化权限认证实战指南
  • Launcher3 Hotseat区域动态插入All Apps按钮实现方案
  • Elasticsearch搜索引擎 3(DSL)
  • 数学建模:模型求解方法
  • Windows Qt动态监测系统分辨率及缩放比变化
  • 大动作!百度发布文心大模型4.5、文心大模型X1
  • Shp文件转坐标并导出到Excel和JSON(arcMap + excel)
  • Linux-数据结构-线性表-单链表
  • 基于深度学习的风格迁移实战:从神经风格迁移到CycleGAN