http升级https,让网站安全性飙升
https可以看作在http基础上增加ssl证书以增强域名网站安全性的网络协议
1.到相关机构申请ssl证书
- 像使用阿里云服务器的就可以直接到控制台免费申请一年的ssl证书
2.下载证书到本地后上传证书到服务器
-
选择适合自己服务器的类型的证书下载到本地,我这里则是下载了我常用的nginx服务器的ssl证书
-
把下载下来的证书压缩包解压会得到两个文件,分别证书文件(.pem结尾)和密钥文件(.key),ssh登录服务器,在nginx服务器目录nginx/conf/下新建一个cert文件夹,方便专门存放证书文件(官方推荐),然后使用ftp或者其他工具上传这两个文件到cert文件夹下
3.配置服务器,编辑配置文件
上传完文件后就可以最后配置nginx服务器的nginx.conf文件了,通常文件位置在(usr/local/nginx/conf/nginx.conf)
-
编辑nginx文件,增加一下内容,注意语句的缩进和层级关系,记得修改下面的配置内容
# HTTPS server server { listen 443 ssl; server_name xxx.yourdomain.com; #这里修改成你申请证书的域名 ssl_certificate cert/xxxxxxx_xxx.yourdomain.com.pem;#修改成证书文件路径(可为相对路径和绝对路径),如果就放在cert文件夹就只改文件名 ssl_certificate_key cert/xxxxxxx_xxx.yourdomain.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; root /var/www-data/yhxtapi; index index.html index.php; location / { } }
-
(可选)可以在配置文件中增加一下配置,让所有http请求都链接http,可以让网站更安全
server { listen 80;#根据实际修改,通常默认网页端口为80 server_name xxx.yourdomain.com;#根据实际申请证书域名修改 rewrite ^(.*)$ https://$host$1 permanent; }
-
保存文件,重载一下nginx服务器
nginx -s reload
-
附上一张配置文件的关系图
过一段时间重新打开网站就是https连接的了,域名旁也会有个“小锁”显示“连接是安全的”
4.可能会踩到的坑:
(1).配置完后仍然是http连接
-
检查下网站设置域名的位置是否改成了https(确保网站每个设置域名的地方都从http改成https)
-
像我的halo博客后台的博客设置就需要更改设置,不过,应该可以直接用泛域名(xxxxx.cn),不加https,不过一定不要是http
-
还有一些主题设置里面也会有域名设置,如果不更改就可以请求不到css/js这些样式文件
(2).服务器防火墙没开放443端口
- 因为ssl协议走443端口,所以一定要开放443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent #永久开放443端口命令
(3).可能是你更改的配置还没有生效
如果以上的问题你都解决了,其他问题也上百度,谷歌查找过解决,但是仍于是无补,那就可能是你设置的一些配置还没有生效,还有你用同一个浏览器打开你的网站时有旧缓存,还有dns、防火墙这些没有刷新这些都会出现问题