目录:
- https概述
- 申请免费ssl证书流程
- 部署https
1、https概述
HTTP
HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。
HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:
- TCP 三次同步握手
- 客户端验证服务器数字证书
- DH 算法协商对称加密算法的密钥、hash 算法的密钥
- SSL 安全加密隧道协商完成
- 网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。
HTTP 由于是明⽂传输,所谓的明⽂,就是说客户端与服务端通信的信息都是⾁眼可⻅的,随意使⽤⼀个抓包⼯具
都可以截获通信的内容。
所以安全上存在以下三个⻛险:
- 窃听⻛险,⽐如通信链路上可以获取通信内容,⽤户号容易没。
- 篡改⻛险,⽐如强制植⼊垃圾⼴告,视觉污染,⽤户眼容易瞎。
- 冒充⻛险,⽐如冒充淘宝⽹站,⽤户钱容易没。
HTTPS 在 HTTP 与 TCP 层之间加⼊了 TLS 协议,来解决上述的⻛险。
附图:
SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。
故推荐有站点均部署https。
2、申请免费ssl证书流程
这里以阿里云申请免费ssl证书为例子:
官方教程:
https://help.aliyun.com/document_detail/156645.html?spm=5176.7968328.J_7614544130.4.5e9765c3wW8200
申请免费DV试用证书地址:
https://common-buy.aliyun.com/?spm=a2c4g.11186623.2.7.2f917af30D0g5Q&commodityCode=cas_dv_public_cn&request=%7B%22product%22:%22cert_product%22,%22domain%22:%22all%22,%22productCode%22:%22symantec-dv-1-starter%22%7D
附图:
流程:
(1)选择免费证书–创建证书
(2)证书申请:
证书购买后,还需进行证书申请,
这里特别注意:域名验证方式,一般有文件验证、dns验证两种,
一般推荐进行dns验证(根据提示,在域名解析界面添加TXT记录即可)。
等待验证通过后,ssl证书就颁发了。一般等待10分钟的样子。
(3)证书下载:
根据您的网站web类型 进行下载,比如您的web 是nginx 那么就下载nginx ssl证书
下面以nginx 为例:
3、部署https
登录到自己服务器,找到nginx配置文件:一般是修改:/nginx/conf/nginx.conf(根据自己nginx配置寻找)
配置文件nginx.conf找到https 页面
主要将下述两段路径,替换为自己ssl证书的路径。
自行将证书上传到服务器某个目录下面,比如我上传到/home/nginx/conf/cert/目录下面。
ssl_certificate /home/nginx/conf/cert/xxx.cn.pem;
ssl_certificate_key /home/nginx/conf/cert/xxx.cn.key;
然后在系统防火墙或安全组放行443端口,然后重启nginx服务。这样https就部署好了。
点击《小锁》就可以看到ssl 证书信息了。
附图:
注意:web浏览器默认是http协议,故要直接访问到https网站还需要设置301跳转。
nginx 301规则如下:
server {
listen 80;
server_name abc.com;
rewrite ^(.*) https://www.abc.com$1 permanent; #这段就是需要添加的,abc.com对应修改为您自己的域名
}
这样恭喜你,就已经部署好https了。