chrome浏览器会将不使用的https的应用标记为不安全网站,Apple ATS政策,近几年来小程序的推广,以及近年来人们对隐私及数据安全意识的提高,人们逐步认识到了网络安全的重要性及紧迫性.这些都要求我们必须要提升互联网应用的安全性,互联网应用使用https就是提升网络全的一个重要组成部分.
本文主要介绍怎么在阿里云申请免费的https的重要组成部分的ssl证书及搭建基于nginx的https服务.
认识SSL
ssl是一种数字证书,类似于驾照、护照和营业执照的副本.因为配置在服务器上面,也称为服务器证书.
ssl证书遵循ssl协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密的功能.
ssl证书有收费的,也有免费的,当然了,收费的和免费的对用户来说享受的服务和安全级别是不同的,不过对于一般的个人用户来说免费的ssl证书基本可以满足需求.收费的ssl证书,从几十块到成千上万的价格不等.阿里云提供了免费的ssl证书.
在阿里云申请免费的ssl证书
我们可以进入阿里云网站,然后搜索ssl,然后进入到ssl证书服务的页面,直接选择“立即购买”就可以了(如果没有登录,显示的是“选购证书”,点击“选购证书”会让我们登录,登录后就变成“立即购买”了).
进入ssl服务页面后,点击“立即购买”
然后选择“免费版(个人)DV”
选择好以后直接点击右下角的“立即购买”就可以了.这里只是走了一个交易流程,并不需要我们付钱.
个人免费版的ssl证书,只能保护一个域名,虽然是个人版的但是也支持企业申请,一个阿里云账户最多可以签发20张证书.
另外,一个主域名和一个子域名,属于2个不同的域名,需要两个ssl证书保护.
“立即购买”之后,确认订单信息,然后根据提示操作“同意服务协议”,然后就去支付.
一般的购买流程,确认信息,支付,支付完成之后,会提示我进入“ssl证书控制台”.
进入控制台页面后,控制台会直接弹出一个大的弹层告诉我们去申请证书
然后在申请页面根据实际情况填写信息就可以了,在该页面中会有域名验证方式和CSR生成方式,如果我们的域名是在阿里云购买并且是在阿里云解析的,就直接选择默认的方式就可以了,如果域名不是在阿里云购买的,则可以根据实际情况自行选择
填写好后点击“下一步”,然后就直接点击“验证”吧,如果在阿里云购买的域名并且在阿里云解析的,瞬间验证成功,然后就可以提交审核了.
提交后,就等待CA的审核吧.
一般情况下,提交审核后等个2,3分钟后就可以审核通过了
到这里,ssl免费证书已经申请完成了.接下来就是配置阿里云服务器和nginx了.
开启ssl的防火墙设置
我这是阿里云的轻量应用服务器,就拿轻量应用服务器作为例子吧.
进入到轻量应用服务器的控制台,瑞阿土所示,根据提示操作即可.
配置基于nginx的https服务
上传ssl证书
从ssl服务控制台,下载已经审核并且已签发的ssl证书
上传证书到服务器:为了方便管理,我把ssl证书上传到了nginx的配置文件目录下
/etc/nginx/cert/certificate.key
/etc/nginx/cert/certificate.pem
配置nginx
upstream api {
server 127.0.0.1:3000;
}
server {
#listen 80;
# 这部分的ssl_开始的配置是对ssl配置起作用的.
listen 443 ssl;
server_name api.lingyilab.com;
ssl on;
ssl_certificate cert/api.lingyilab.com.pem;
ssl_certificate_key cert/api.lingyilab.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# location这个部分已经和ssl没有关系ll,这里是使用nginx做了反向代理服务
location / {
#root /www_root/api.lingyilab.com;
#index index.html index.htm;
proxy_set_header HOST $Http_host;
proxy_set_header X-Real-IP $Remote_addr;
proxy_set_header X-Forwarded-For $Proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-proxy true;
proxy_pass http://api;
proxy_redirect off;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
重启nginx
systemctl restart nginx
重启后测试效果,已经可了
一般情况下到这里,就已经可以了,如果不行或者报错,应该是防火墙的问题.如果在轻量级应用服务器开放了443端口之后还不行,就再次手动执行一次,开放一下443端口,就可以了
systemctl status firewalld # 查看防火墙状态
firewall-cmd --zone=public --add-port=443/tcp --permanent # 开放443端口
systemctrl reload firewalld # 重启防火墙服务