HTTPS 是什么
- HTTPS 是一种应用层协议,是一种透过计算机网络进行安全通信的传输协议,HTTPS 经由 HTTP 进行通信,但是在 HTTP 的基础上引入了一个加密层,使用 SSL/TLS 来加密数据包,
- HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性
- HTTPS 默认工作在 TCP 协议443端口
HTTPS工作流程
既然要保证数据安全,就需要进行“加密”,即网络传输中不再直接传输明文,而是加密之后的“密文”。加密的方式有很多,但是整体可以分为两大类:对称加密和非对称加密
- 对称加密其实就是只通过一个密钥,把明文加密成密文,并且也能把密文解密成明文
- 非对称加密要额外再用到两个密钥,一个叫做==“公钥”,一个叫做”私钥“。公钥和私钥是配对的==,这对密钥由服务器产生
- 客户端如何获取到公钥?客户端如何确定这个公钥不是黑客伪造的?为了解决这两个问题,就引入了证书
证书机制
在客户端和服务器刚建立连接时,服务器就给客户端返回一个证书。这个证书就好比人的身份证,用来作为网站的身份标识。而每搭建一个 HTTPS 网址时都需要在 CA 机构申请一个证书
证书包含的信息
- 证书发布机构
- 证书有效期
- 公钥
- 证书所有者
- 签名
HTTPS的完整流程
对称加密: 需要有一个客户端生成的对称密钥,用于对传输的数据进行加密,但需要将该对称密钥告知给服务器
非对称加密:服务器提供一个公钥(自己持有私钥),将公钥传发送给客户端,客户端使用公钥对对称密钥进行加密,将密文传送给服务器
引入证书机制:通过第三方公证机构,向网站颁发证书,该证书里面就含有公钥。客户端向服务器请求的也就是证书,客户端拿到证书后去公证机构校验,如果证书合法,就使用里面的公钥对对称密钥进行加密
阿里云免费证书申请
下载所需的证书zip
我这里是nginx配置的ssl证书
下载包含pem和key两种文件 .key (私钥)与 .pem(公钥)
在nginx中使用证书
在nginx下建立cert文件夹,传入解压好的pem和key文件
进入nginx.conf配置页面配置nginx,具体配置内容如下 ,我配置的是访问json文件,各位可以配置别的内容
server {listen 443 ssl;server_name shilei.tech;root /opt/json/;ssl_certificate /usr/local/nginx/cert/shilei.tech.pem;ssl_certificate_key /usr/local/nginx/cert/shilei.tech.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location /{if (!-e $request_filename){rewrite ^(.*)$ /$1.json last;break;}root /opt/json/;index apple-app-site-association.json;}
停止并启动nginx
./nginx -s stop
./nginx
访问测试
https://shilei.tech/apple-app-site-association
注意事项
保证服务器的443端口和阿里云的防火墙是开启的,否则访问不到
# 开启443端口
firewall-cmd --add-port=443/tcp --permanent
# 重载防火墙
firewall-cmd --reload