通过修改简单的Nginx配置文件来实现SSL证书的加持,使得我们的应用程序支持HTTPS访问协议。
首先,搞到SSL证书
付费的话就很多选项,我就简单介绍一下免费的吧。
免费的SSL证书都是针对单一域名,比如:baofeidyz.com 、quan.baofeidyz.com 这两个域名是单独的,所以是需要两个免费的SSL证书
腾讯云和阿里云目前都有免费的SSL证书可以申请。
腾讯云免费SSL证书
目前来看腾讯云似乎没有直接的入口,需要我们登录到腾讯云的控制台(如下图),请注意我红框选中的地方,我们可以使用SSL证书管理作为我们申请免费SSL证书的入口。如果你找不到这个入口,可以点另外一个红框中的加号添加SSL证书管理。
进入SSL证书管理以后(如下图),点击 申请证书 即可申请免费的SSL证书,剩下的验证环节腾讯云有完善的文档介绍,就不再赘述。
阿里云免费SSL证书
阿里云的入口比腾讯云的还要难找,而且阿里云的免费SSL证书好像需要人工审核,我已经在腾讯云申请过了,我这里就只是截图演示一下。
我是从控制台进入的,实际上你不需要进入控制台也可以,主要是需要找到下图中红框圈中的CA证书服务(数据安全)
接下来我们直接走购买流程(如下图)
接下来就是巧妙的操作,请按照下图中的步骤进行
然后我们可以看到选项菜单里面多了一个免费域名的选项,如下图
点选以后,就可以看到右侧的价格变为0了,然后按照流程走下去就可以了。
如果证书在一天内未通过DNS或者文件验证,可以发起工单联系客服解决。
然后,配置SSL证书到Nginx中
腾讯云的SSL证书下载包中,有一个单独的Nginx文件夹,里面有两个文件都是我们需要的,如下图所示。
我们需要把这两个文件放到我们的服务器中,如果是linux系统,推荐放到/etc/ssl/
目录下
然后我们需要去找到nginx的配置文件。
关于这个配置文件的路径查找,推荐大家启动nginx后使用ps -ef | grep nginx
的命令去查找,这样可以很简单的找到真正会生效的那个配置文件。
首先,我们需要启动nginx
service nginx start
然后再去查找正在运行中的nginx服务
ps -ef | grep nginx
得到的结果可能是这样的:
[root@host ssl]# ps -ef | grep nginx
root 1007 1 0 May20 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 2712 1007 0 02:17 ? 00:00:00 nginx: worker process
root 2768 2658 0 04:32 pts/1 00:00:00 grep --color=auto nginx
那么我们nginx配置文件的地址就应该是
/etc/nginx/nginx.conf
使用vim打开配置文件
vim /etc/nginx/nginx.conf
我们需要在
http{
}
中去添加一个server节点,如下所示
http{
#http节点中可以添加多个server节点
server{
#监听443端口
listen 443;
#对应的域名,把baofeidyz.com改成你们自己的域名就可以了
server_name baofeidyz.com;
ssl on;
#从腾讯云获取到的第一个文件的全路径
ssl_certificate /etc/ssl/1_baofeidyz.com_bundle.crt;
#从腾讯云获取到的第二个文件的全路径
ssl_certificate_key /etc/ssl/2_baofeidyz.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
location / {
#文件夹
root /usr/local/service/ROOT;
#主页文件
index index.html;
}
}
}
到这里还不行,因为如果用户使用的是http协议进行访问,那么默认打开的端口是80端口,所以我们需要做一个重定向,我们在上一个代码块的基础上增加一个server节点提供重定向服务。
http{
#http节点中可以添加多个server节点
server{
#监听443端口
listen 443;
#对应的域名,把baofeidyz.com改成你们自己的域名就可以了
server_name baofeidyz.com;
ssl on;
#从腾讯云获取到的第一个文件的全路径
ssl_certificate /etc/ssl/1_baofeidyz.com_bundle.crt;
#从腾讯云获取到的第二个文件的全路径
ssl_certificate_key /etc/ssl/2_baofeidyz.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
location / {
#文件夹
root /usr/local/service/ROOT;
#主页文件
index index.html;
}
}
server{
listen 80;
server_name baofeidyz.com;
rewrite ^/(.*)$ https://baofeidyz.com:443/$1 permanent;
}
}
然后使用保存配置文件,使用nginx -t
命令对文件对配置文件进行校验,如果看到successful表示文件格式证书,这时候我们就可以启动nginx服务或者重新加载nginx配置文件。
启动nginx服务:service nginx start
重新加载配置文件:nginx -s reload
其实当你在腾讯云下载证书的时候,腾讯云会提供一个链接教你如何配置nginx的证书。