1、在 Web 服务器软件中配置 SSL 证书并启用 HTTPS 站点。
2、设置 HTTP 到 HTTPS 的重定向,将所有通过 80 端口的访问自动跳转到 443 端口,实现“默认”使用 SSL。
还需要确保云主机的防火墙/安全组开放了 443 端口。
下面我将以两种最流行的 Web 服务器(Nginx 和 Apache)为例,提供详细的配置方法。
在开始配置之前,请确保你已经拥有:
1、一个有效的域名(例如example.com
),并且已经解析到你的云主机 IP。
2、一份 SSL 证书,可以是:
免费证书从 [Let‘s Encrypt](https://letsencrypt.org/) 获取(推荐个人和小型项目使用)。
付费证书从云服务商(如阿里云、腾讯云)或其他证书颁发机构购买。
3、 证书文件通常包括:
.crt
或.pem
文件(证书文件)
.key
文件(私钥文件)
以 Let‘s Encrypt 为例,使用certbot
工具可以自动完成证书申请和安装,非常方便。
1、编辑网站配置文件
通常位于/etc/nginx/conf.d/
或/etc/nginx/sites-available/
目录下,找到你的网站配置文件(如example.com.conf
)。
2、配置 HTTPS 站点和重定向
一个标准的配置模板如下,它包含了一个server
块来监听 80 端口并重定向,另一个server
块来监听 443 端口并提供 HTTPS 服务。
# 1. HTTP 重定向到 HTTPS server { listen 80; listen [::]:80; server_name example.com www.example.com; # 替换为你的域名 # 将所有 HTTP 请求永久重定向 (301) 到 HTTPS 版本 return 301 https://$server_name$request_uri; } # 2. HTTPS 主配置 server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com www.example.com; # 替换为你的域名 # SSL 证书和私钥的路径 ssl_certificate /path/to/your/certificate.crt; # 替换为你的证书路径 ssl_certificate_key /path/to/your/private.key; # 替换为你的私钥路径 # 可选的:增强 SSL 安全性 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:...; # 使用现代加密套件 ssl_prefer_server_ciphers off; # 网站根目录和其他设置 root /var/www/html; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } # 其他 location 配置,如 PHP-FPM 等... }
3、测试并重启 Nginx
# 测试配置文件语法是否正确 sudo nginx -t # 如果测试成功,重新加载 Nginx 使配置生效 sudo systemctl reload nginx
1、启用 SSL 模块
sudo a2enmod ssl sudo a2enmod rewrite # 如果使用重定向规则,需要这个模块
2、编辑虚拟主机文件
通常位于/etc/apache2/sites-available/
目录下,你需要为 HTTPS 创建一个配置文件(如default-ssl.conf
),或者修改现有的。
3、配置 HTTPS 和重定向
a) 方法A:在 HTTP 虚拟主机中配置重定向(推荐)
编辑你的 HTTP(端口 80)虚拟主机文件(如000-default.conf
):
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com # 使用 Redirect 指令进行永久重定向 Redirect permanent / https://example.com/ # 或者使用更灵活的 Mod_Rewrite # RewriteEngine On # RewriteCond %{HTTPS} off # RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </VirtualHost>
b) 方法B:配置 HTTPS 虚拟主机
编辑或创建 SSL 虚拟主机文件(如default-ssl.conf
):
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerName example.com ServerAlias www.example.com # 网站管理员邮箱 ServerAdmin webmaster@localhost # 网站根目录 DocumentRoot /var/www/html # SSL 引擎开关 SSLEngine on # SSL 证书和私钥的路径 SSLCertificateFile /path/to/your/certificate.crt SSLCertificateKeyFile /path/to/your/private.key # 如果需要配置证书链,取消注释并设置路径 # SSLCertificateChainFile /path/to/chainfile.crt # 其他目录配置、日志设置等... ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # 可选的:增强 SSL 安全性 SSLOptions +StrictRequire </VirtualHost> </IfModule>
4、启用站点并重启 Apache
# 启用 SSL 虚拟主机(如果你使用了一个新的配置文件) sudo a2ensite default-ssl.conf # 测试配置文件 sudo apache2ctl configtest # 重启 Apache 服务 sudo systemctl restart apache2
这是非常关键的一步,如果端口没开,外部将无法访问你的 HTTPS 网站。
登录你的云服务商控制台(如阿里云、腾讯云、AWS 等),找到你的云主机实例的安全组配置。
1、 添加入站规则。
2、 协议类型:选择TCP。
3、 端口范围:填写443。
4、 授权对象:0.0.0.0/0
(允许所有 IP 访问)或根据你的需求设置更严格的 IP 段。
5、 保存规则。
请确保你的云主机操作系统自带的防火墙(如iptables
或firewalld
)也放行了 443 端口。
对于firewalld
(CentOS/RHEL):
sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
对于ufw
(Ubuntu/Debian):
sudo ufw allow 443/tcp sudo ufw reload
完成所有配置后,打开浏览器:
1、 直接访问http://example.com
,浏览器地址栏应该会自动跳转到https://example.com
,并且显示安全锁标志。
2、 直接访问https://example.com
,应该能正常打开网站,并显示安全锁标志。
你可以使用 [SSL Labs SSL Test](https://www.ssllabs.com/ssltest/) 这个在线工具来全面检测你的 SSL 配置是否安全、正确。
要让云主机网站默认使用 SSL 端口,核心就是“配置 HTTPS 站点” + “设置 HTTP 强制重定向”,通过以上步骤,你的网站就会对所有访问者默认提供安全的 HTTPS 连接了。
文章摘自:https://idc.huochengrm.cn/zj/17607.html
评论