为什么要使用https?
因为 http
是明文传输的,通过 http
协议传输的内容很容易被偷看和篡改,为了安全就为 http
协议再加上了一层 SSL/TLS
安全协议,所以就有了 https
https
可以理解为 HTTP over SSL/TLS
SSL/TLS
HTTP over SSL/TLS
字面意思就是带 安全套接层
的 http
协议,内心纯洁的同学也可以理解为 带安全套的 http
,因为带了安全套,所以当然会比较安全(/(ㄒoㄒ)/~~)。其中 SSL
是 Secure Sockets Layer
的缩写,是 “安全套接层” 的意思。TLS
是 Transport Layer Security
的缩写,是 传输层安全协议
的意思。SSL
和 TLS
是同一个东西的不同阶段,也就可以理解为同一个东西。都是一种安全协议
怎么将HTTP升级为HTTPS呢?
升级到 https
首先要获得 CA
签发的安全证书文件。
CA
证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
获取CA
获取CA证书的最好的方式就是去阿里云申请免费的证书,阿里云每年可以申请20个免费的个人证书。
配置HTTPS
获取到证书之后将证书上传到服务器,分别有pem和key文件
cd /etc/nginx/conf.d
mkdir certs
//将文件放在这个目录下面
vi nginx.conf
配置nginx文件
server {
listen 80;
listen 443 ssl;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Set-Cookie "HttpOnly";
add_header Set-Cookie "Secure";
sub_filter_once off;
sub_filter 'domain=.gale-blog.cn' 'domain=.gale-blog.cn';
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options: nosniff;
add_header X-Xss-Protection: 1;
add_header X-Xss-Protection: mod=block;
ssl_certificate /etc/nginx/conf.d/certs/gale-bolg.cn.pem;
ssl_certificate_key /etc/nginx/conf.d/certs/gale-bolg.cn.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;
server_name gale-bolg.cn;
index index.do;
location / {
proxy_hide_header X-Powered-By;
proxy_set_header HOST $host; #域名转发
proxy_set_header X-Real-IP $remote_addr; #IP转发
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Remote_Addr $remote_addr;
proxy_cookie_path / $cookie_path;
proxy_connect_timeout 36000;
proxy_send_timeout 36000;
proxy_read_timeout 36000;
proxy_cookie_domain $host .gale-blog.cn;
proxy_cookie_path / $cookie_path;
proxy_pass http://gale-blog_cn;
}
}
Docker启动Nginx
如果使用的是docker启动的nginx,如果没有对外暴露443的接口,可能出现无法访问的情况,需要重新配置nginx
docker run -p 80:80 -p 443:443 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest
评论区