腾讯云SSL证书获取及Nginx配置教程

前言

很多人应该都有属于自己网站,刚开始基本是只能用http进行访问,无法使用https安全访问,但是随着网络安全意识的不断提高,越来越多的网站开始使用HTTPS协议来保护用户的数据安全,SSL证书是实现HTTPS协议的关键组件,本文将讲解如何在腾讯云上获取SSL证书,并配置到Nginx服务器上。

一、腾讯云SSL证书获取

首先我们获取SSL证书,如果大家有米的话,可以选择付费正式版证书,也可以选择免费版,最近改版了只能申请3个月的。所以需要定时更换证书。另外选择腾讯云的原因的,免费证书审批很快,基本几分钟就过,所以强烈推荐。

点击申请免费证书,只需要两步就可以完成,申请并验证域名所有权,腾讯云会发送验证邮件到您的域名注册邮箱,点击邮件中的链接完成验证就行,证书通过站内信通知,不超过5分钟,十分块。

证书通过之后,在控制台就可以刚刚申请的证书了,接下来就需要下载证书并且上传到网站服务器,在证书右边点击下载。

在下载框选择Nginx,大部分也是使用Nginx转发部署。

下载完成会有一个网站域名的压缩包,里面有四个文件,都是以域名。

二、Nginx配置SSL证书

上传SSL证书到服务器

上述证书下载好之后,接下来就需要把将下载的证书文件(包括.crt和.key文件)上传到网站服务器了,可以参考腾讯云官方教程部署教程。这里建议直接放到Nginx的conf目录下,与nginx.conf通过目录,这样方便Nginx读取。

Nginx配置SSL证书

接下来就需要在Nginx配置文件中添加读取ssl证书,配置如下,主要在server块中添加SSL配置,以及HTTP转发到HTTPS请求。

首先先对比一下没有配置SSL证书的nginx.conf。

代码语言:actionscript
复制
worker_processes  1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile        on;
keepalive_timeout  65;

upstream halo {
  server 127.0.0.1:8090;
}

server {
  listen 80;
  listen [::]:80;
  server_name xiaoming886.top;
  client_max_body_size 1024m;

  location / {
    proxy_pass http://halo;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

}

接下来看添加ssl证书的nginx.conf配置

代码语言:bash
复制

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile        on;
keepalive_timeout  65;

upstream halo {
  server 127.0.0.1:8090;
}

server {
 #SSL 默认访问端口号为 443
 listen 443 ssl;
 #请填写绑定证书的域名
 server_name www.xiaoming886.top xiaoming886.top;
 #请填写证书文件的相对路径或绝对路径
 ssl_certificate  xiaoming886.top_bundle.crt;
 #请填写私钥文件的相对路径或绝对路径
 ssl_certificate_key xiaoming886.top.key;
 ssl_session_timeout 5m;
 #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 #请按照以下协议配置
 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_prefer_server_ciphers on;

 location / {
      proxy_pass http://halo;
      proxy_set_header HOST $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
}

# http转发到https
server {
 listen 80;
 #请填写绑定证书的域名
 server_name xiaoming886.top;
 #把http的域名请求转成https
 return 301 https://$host$request_uri;
}

}

通过两个文件的对比,主要添加了注释的部分,并不复杂,这些配置都可以在官方教程进行复制粘贴。

配置完成之后,需要重启Nginx服务以使新配置生效,在nginx的sbin目录命令行中执行分别以下命令,也就是停止nginx,并再次启动。

代码语言:apacheconf
复制
./nginx -s stop
./nginx

安装SSL模块

这里如果是第一次配置SSL证书,有可能会报错,nginx找不到SSL模块

这里需要注意的时候,需要进入Nginx下载包的目录,不是安装成功目录,需要执行configure命令进行安装ssl模块

进入Nginx下载包的目录之后,执行以下命令,部署ssl模块

代码语言:bash
复制
sudo ./configure --with-http_stub_status_module --with-http_ssl_module

等待配置成功,重新安装Nginx,这里不用担心覆盖之前配置

代码语言:bash
复制
sudo make install

安装完成之后,进入nginx安装目录,重启Nginx服务以使新配置生效,没有报错说明启动成功,ssl证书配置完成。

现在网站已经通过HTTPS协议提供服务,并使用腾讯云SSL证书进行了加密。可以通过浏览器访问网站,并检查地址栏中的锁图标以确认SSL证书已正确安装,发现使用https://xiaoming886.top可以安全访问。

总结

本文讲解了如何在腾讯云上获取SSL证书,并将其配置到Nginx服务器上,整体来说比较简单,但是对于新手来说无从下手,如果对于nginx不熟悉的同学更加寸步难行,本文也是把踩过的坑分享出来,比如上述SSL模块报错和SSL证书读取位置。通过以上步骤,可以为网站提供安全的HTTPS连接,保护用户的数据安全啦。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!