View Categories

HTTPS 重定向与 SSL 证书:配置详解与必要性解释

阅读时间: 1 分钟

在配置网站以实现 HTTPS 重定向时,有一个关键点需要特别注意:即使您的域名仅仅用于将用户的 HTTP 请求自动跳转到 HTTPS 地址,仍然必须为该域名配置有效的 SSL 证书

1. 为什么在 HTTPS 重定向时需要 SSL 证书? #

当用户的浏览器尝试访问您的 HTTP 网站时,服务器会发送一个重定向指令,告诉浏览器应该访问 HTTPS 版本的网站。在浏览器真正跳转到 HTTPS 地址之前,它会首先尝试验证原始 HTTP 域名(即将被重定向的域名)的 SSL 证书

这个验证过程是 HTTPS 安全机制的一部分。浏览器需要确认服务器提供的证书是可信的,并且与正在访问的域名相匹配。如果原始域名没有配置有效的 SSL 证书,或者证书存在问题(例如过期、不被信任等),浏览器可能会发出安全警告,甚至阻止用户访问,从而导致重定向失败。

1.1 关键点 #

  • 进行 HTTPS 重定向时,浏览器在跳转前会验证原域名的 SSL 证书
  • 即使域名仅用于跳转,也必须为其配置有效的 SSL 证书
  • 缺少或无效的 SSL 证书可能导致重定向失败和安全警告。

2. HTTPS 重定向配置示例(Nginx) #

以下是在 Nginx 服务器中配置 HTTPS 重定向(https://xinlake.dev 跳转到 https://xsymm.com)的示例。请注意,即使是监听 80 端口(HTTP)的 server 块,也需要确保相关的域名拥有有效的 SSL 证书。

Nginx
server {
    listen 80;
    listen [::]:80;

    server_name xinlake.dev www.xinlake.dev;

    # 将所有 HTTP 请求 301 重定向到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name xinlake.dev www.xinlake.dev;

    # 配置 xinlake.dev 和 www.xinlake.dev 的 SSL 证书
    ssl_certificate /etc/letsencrypt/live/xinlake.dev/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/xinlake.dev/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/xinlake.dev/chain.pem;

    # 配置 SSL 协议和密码套件
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
    ssl_prefer_server_ciphers on;
    # ssl_dhparam /etc/ssl/certs/dhparam.pem;  # 可选配置

    # 配置 SSL 会话缓存
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    # 启用 OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    # 强制将已是 HTTPS 的 xinlake.dev 和 www.xinlake.dev 重定向到 xsymm.com
    return 301 https://xsymm.com;
}

在上述配置中

  • xinlake.devwww.xinlake.dev 这两个域名在监听 80 端口的 server 块中进行了 HTTPS 重定向。
  • 您需要为这两个域名(xinlake.devwww.xinlake.dev)都申请并配置有效的 SSL 证书,即使它们的唯一功能是跳转到 https://xsymm.com

有用的链接:

更新 2025-05-05