前言
很多人应该都有属于自己网站,刚开始基本是只能用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腾讯技术创作特训营最新征文,快来和我瓜分大奖!