Skip to main content

如何将自己的网站配部署SSL证书(配置成HTTPS访问)

HTTPS的概念和原理一文讲解了HTTPS的概念和原理,本文将介绍如何为自己的网站部署SSL证书,并将网站的访问方式置成HTTPS访问。

1. 环境说明

本文以阿里云ECS服务器下的Nginxweb服务器为例,介绍如何为自己的网站部署SSL证书,并将网站的访问方式置成HTTPS访问。详细环境说明如下:

  • 网站示例: SunLogging
  • 服务器: 阿里云ECS
  • 服务器系统: Ubuntu 24.04 LTS
  • 博客框架: Hexo
  • 网站主题: Volantis
  • 证书类型: 阿里云的个人测试证书
  • Web服务器: Nginx

2. 购买证书

  1. 登录数字证书管理服务控制台。
  2. 在控制台中选择个人测试证书,点击创建证书。
  3. 填写域名信息并提交申请。
  4. 按照提示在您的域名DNS服务器上添加用于验证的解析记录。
  5. 完成验证后,证书将自动签发。
  6. 注意:
    • 个人测试证书是免费的,有效期为3个月,且需要与域名绑定使用。
    • 个人测试证书只能绑定一个域名,如果你的网站是一个主(根)域名+多个二级域名,那只能绑定主域名和默认的www二级域名(如www.sunlogging.com)。
    • 针对有多个域名(如:一个主(根)域名+多个二级域名)的情况,可以为每一个域名分别申请和配置独立的个人测试证书。如为sunlogging.com申请一个个人测试证书,为t-book.sunlogging.com也申请一个个人测试证书

3. 下载证书

  1. 正式证书个人测试证书(原免费证书)页签下,定位到要下载的SSL证书,在操作列,单击更多
  2. 下载页签,定位到目标服务器(选择自己对应的服务器类型),在操作列,单击下载
  3. 完成下载后,您需要解压对应SSL证书的压缩包获得对应的SSL证书文件。Nginx服务器的证书解压后的文件说明如下:
    • domain name.pem:证书文件。
    • domain name.key:证书私钥文件。

4. 开放443端口

HTTPS的默认访问端口443,而阿里云默认是禁止443端口访问权限的,所以我们要为实例手动添加安全组,让阿里云给相应的端口和IP放行。该步骤非常重要,若不手动配置,我们将无法通过HTTPS的方式访问我们的网站。

  1. 依次点击: 云服务器 ECS -> 网络与安全 -> 安全组。 这里应该会有一个系统默认配置的安全组,描述为"System created security group."。这个安全组是你购买ECS服务器后,这个服务初始化时自动配置的。

  2. 点击这个安全组右侧的“管理规则”,进入配置详情页。

  3. 点击: 入方向 -> 快速添加

  4. 勾选“HTTP (80)”后,点击“确定”。

5. 上传证书

  1. 通过ssh工具登录服务器。

    ssh root@your_server_ip
  2. 创建证书目录

    # 进入nginx的配置目录
    cd /etc/nginx
    # 创建证书目录
    mkdir cert
  3. 上传证书文件。

有多重方式可以上传证书,如通过FTP工具,Xshell工工具、云助手等。这里我们以阿里云的云助手为例,上传证书文件。

  • 登录ECS管理控制台,在左侧导航栏,选择运维与监控 > 云助手。在ECS实例页签下的实例列表,选择目标实例,单击操作列的发送文件
  • 选择要上传的证书文件,并填写目标路径(/etc/nginx/cert),然后点击执行即可。

6. 配置证书

1. 打开nginx配置文件:

# nginx的根配置文件
vim /etc/nginx/nginx.conf

# 或者你的网站的配置文件,如:
/etc/nginx/sites-available/sunlogging

2. 在server模块添加如下配置:

server {
# 监听端口,HTTPS的默认访问端口443
listen 443 ssl;
# 证书文件和证书私钥文件的路径
ssl_certificate /etc/nginx/cert/sunlogging.com.pem;
ssl_certificate_key /etc/nginx/cert/sunlogging.com.key;
# 设置TLS协议
ssl_protocols TLSv1.2 TLSv1.3;

# 监听端口
# listen 80;
# 网站域名
server_name sunlogging.com www.sunlogging.com;
# ...(胜率其他配置)
}

3. 重新加载配置:

# 检查配置文件是否有语法错误
nginx -t
# 热加载,重新加载配置文件
sudo systemctl reload nginx
# 查看nginx服务是否运行
sudo systemctl status nginx

7. 常见问题

7.1. The connection for this site is not secure

1. 问题现象:

The connection for this site is not secure
sunlogging.com uses an unsupported protocol.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH

2. 可能原因:

您的Web服务器可能使用了不安全的协议版本(如SSL 2.0、SSL 3.0、TLS 1.0或TLS 1.1),或者Web服务器配置的TLS协议与操作系统所支持的TLS协议不一致。

3. 解决方案:

在nginx配置中制定TLS协议的版。

# 设置支持的SSL/TLS协议版本
ssl_protocols TLSv1.2 TLSv1.3;

8. 参考文档