为什么必须使用 HTTPS?

在开始配置之前,先理解 HTTPS 的好处,这会让你更有动力去完成它。

网站如何使用https访问
(图片来源网络,侵删)
  1. 数据加密,保障安全:HTTPS 通过 SSL/TLS 协议对浏览器和服务器之间的所有通信进行加密,这意味着即使数据在传输过程中被截获,攻击者也无法读取其内容,这对于保护用户登录信息、支付信息、个人隐私等敏感数据至关重要。
  2. 建立信任,提升形象:浏览器地址栏的 🔒 锁形图标是网站安全性的直观体现,用户看到这个标志会更信任你的网站,愿意进行交互和交易。
  3. SEO 优势:Google 等搜索引擎明确表示, HTTPS 是一个轻量级的排名信号,使用 HTTPS 的网站在搜索结果中可能会有轻微的排名提升。
  4. 现代网络功能的基础:许多新的 Web 功能和 API(如 Service Workers, Geolocation, HTTP/2)都要求必须在 HTTPS 环境下才能使用。

HTTPS 的工作原理简介(简化版)

HTTPS = HTTP + SSL/TLS

你可以把它想象成一次安全的通话:

  • HTTP:就像平时在电话里大声说话,旁边的人都能听到内容(不安全)。
  • SSL/TLS:就像你和通话对象先约定了一套“暗语”(加密算法),然后所有对话都用“暗语”进行,即使被别人听到,他也听不懂(安全)。

这个“约定暗语”的过程,在技术上称为 TLS 握手,它通过一个由 证书颁发机构 签发的 SSL 证书 来验证服务器的身份,并协商出后续通信使用的加密密钥。


启用 HTTPS 的详细步骤

整个过程可以分为三个核心步骤:获取证书安装证书配置重定向

网站如何使用https访问
(图片来源网络,侵删)

第 1 步:获取 SSL 证书

SSL 证书是启用 HTTPS 的“钥匙”,你需要向一个受信任的证书颁发机构 申请它。

选择证书类型:

  • DV (Domain Validation) - 域名验证证书

    • :只验证你是否拥有该域名的管理权限。
    • 特点:颁发最快,通常几分钟内就能完成,成本最低(甚至免费)。
    • 适用场景:个人博客、企业官网、信息展示类网站等不涉及复杂身份验证的网站。
    • 推荐免费工具Let's Encrypt,这是一个非营利组织,提供免费的 DV 证书,是目前最流行的选择。
  • OV (Organization Validation) - 企业验证证书

    网站如何使用https访问
    (图片来源网络,侵删)
    • :除了验证域名所有权,还会验证申请单位的真实身份信息(如营业执照)。
    • 特点:浏览器地址栏会显示公司名称,信任度更高,成本也更高。
    • 适用场景:电商平台、金融机构、企业官网等需要向用户展示权威性的网站。
  • EV (Extended Validation) - 扩展验证证书

    • :最严格的验证,会深入审核申请单位的法律实体和真实性。
    • 特点:浏览器地址栏会显示公司名称并变成绿色,信任度最高,成本也最高。
    • 适用场景:银行、大型电商、需要最高级别信任的品牌网站。

获取证书的途径:

  • 通过主机提供商/云服务商获取

    • 优点:通常集成在控制面板中,一键申请和安装,非常方便,阿里云、腾讯云、AWS、Bluehost、SiteGround 等都提供便捷的 SSL 证书服务(很多也集成了 Let's Encrypt)。
    • 推荐:对于新手,这是最简单、最推荐的方式。
  • 通过 Let's Encrypt 手动获取

    • 优点:完全免费。
    • 缺点:需要一定的技术能力,手动操作或使用 Certbot 等工具进行申请和部署,证书有效期为 90 天,需要配置自动续期。

第 2 步:安装 SSL 证书

获取到证书文件后,你需要将它安装到你的 Web 服务器上(如 Nginx, Apache, IIS)。

获取证书文件: 通常你会收到几个文件,最重要的是:

  • 证书文件 (如 your_domain.crtpublic.crt)
  • 私钥文件 (如 your_domain.keyprivate.key) ——这个文件非常重要,必须妥善保管,不能泄露!

在服务器上配置:

这里以最流行的 Nginx 和 Apache 为例:

Nginx 示例配置:

server {
    listen 80; # 监听 HTTP 端口
    server_name your_domain.com www.your_domain.com;
    # 将所有 HTTP 请求重定向到 HTTPS
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2; # 监听 HTTPS 端口
    server_name your_domain.com www.your_domain.com;
    # 配置 SSL 证书和私钥路径
    ssl_certificate /path/to/your/fullchain.pem; # 证书文件路径
    ssl_certificate_key /path/to/your/privkey.pem; # 私钥文件路径
    # 其他 SSL 安全优化配置 (推荐)
    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:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers off;
    # 你的网站根目录和其他配置...
    root /var/www/html;
    index index.html;
}

Apache 示例配置:

# 在 httpd.conf 或虚拟主机配置文件中
# 启用 SSL 模块 (如果未启用)
LoadModule ssl_module modules/mod_ssl.so
# 配置 HTTP 虚拟主机,用于重定向
<VirtualHost *:80>
    ServerName your_domain.com
    ServerAlias www.your_domain.com
    Redirect permanent / https://your_domain.com/
</VirtualHost>
# 配置 HTTPS 虚拟主机
<VirtualHost *:443>
    ServerName your_domain.com
    ServerAlias www.your_domain.com
    # 配置 SSL 证书和私钥路径
    SSLEngine on
    SSLCertificateFile /path/to/your/certificate.crt
    SSLCertificateKeyFile /path/to/your/private.key
    # 如果是中间证书,还需要 SSLCertificateChainFile
    # SSLCertificateChainFile /path/to/your/intermediate.crt
    # 你的网站其他配置...
    DocumentRoot "/var/www/html"
</VirtualHost>

操作要点:

  1. 将上述配置中的路径替换为你服务器上实际的证书和私钥文件路径。
  2. 保存配置文件后,需要重启或重载 Web 服务器使配置生效。
    • Nginx: sudo nginx -s reloadsudo systemctl restart nginx
    • Apache: sudo systemctl restart apache2sudo service httpd restart

第 3 步:配置全站 HTTPS 重定向

安装好证书后,直接访问 http://your_domain.com 仍然可以打开网站(但不安全),你需要配置一个永久重定向 (301 Redirect),将所有 HTTP 请求自动跳转到 HTTPS。

  • 为什么必须做?
    • 安全:强制用户使用加密连接。
    • SEO:避免搜索引擎将 HTTP 和 HTTPS 版本视为两个重复的网站,导致权重分散。
    • 用户体验:确保用户始终看到安全锁标志。

这个重定向步骤其实已经包含在上述 Nginx 和 Apache 的示例配置中了(return 301 ...Redirect permanent ...),如果你是通过主机商的控制面板(如 cPanel)安装的证书,通常会有一个“Force HTTPS”或“Redirect to HTTPS”的选项,勾选即可。


验证和测试

配置完成后,务必进行测试,确保一切正常。

  1. 浏览器地址栏

    • 访问 https://your_domain.com,地址栏应显示 🔒 锁形图标。
    • 点击图标,检查证书信息是否正确(颁发机构、域名、有效期等)。
  2. 检查 HTTP 重定向

    • 在浏览器中访问 http://your_domain.com(注意是 http),页面应自动跳转到 https://your_domain.com
  3. 使用在线工具检测

    • SSL Labs SSL Testhttps://www.ssllabs.com/ssltest/
      • 这是最权威的 SSL 检测工具,它会全面分析你的 SSL 配置,并给出一个从 A 到 T 的评级,目标是获得 A 或 A+ 评级,如果评级较低,它会告诉你如何优化(如启用更现代的协议和加密套件)。
  4. 检查网站资源

    • 确保页面中加载的所有资源(图片、CSS、JS、字体等)都使用了 HTTPS 链接(https://...),如果存在混合内容(页面是 HTTPS,但资源是 HTTP),浏览器可能会在地址栏显示“不安全”警告。
    • 可以通过浏览器的“开发者工具”(F12) -> “网络”(Network) 面板来检查。

后续维护

  • Let's Encrypt 证书续期:如果你使用的是 Let's Encrypt,证书 90 天后会过期,你需要设置自动续期任务,对于 Nginx/Apache,Certbot 通常会自动配置好续期脚本(如 certbot renew),你只需要设置一个定时任务(cron job)每天运行一次即可。
    • 在 crontab 中添加:0 12 * * * /usr/bin/certbot renew --quiet

为网站启用 HTTPS 的核心流程可以概括为:

  1. 申请证书:通过主机商或 Let's Encrypt 获取免费的 SSL 证书。
  2. 安装配置:将证书和私钥文件上传到服务器,并在 Nginx 或 Apache 中进行配置。
  3. 强制重定向:配置 301 重定向,将所有 HTTP 流量引导至 HTTPS。
  4. 测试验证:使用浏览器和 SSL Labs 等工具确保配置正确、安全评级高。

虽然听起来步骤不少,但对于大多数使用主流主机服务的用户来说,通过控制面板“一键开启 HTTPS”已经变得非常简单,完成这一步,你的网站就迈入了安全、可信的现代化标准。