HTTPS

Posted dlq-52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPS相关的知识,希望对你有一定的参考价值。

1.rewrite中的flag

跳转(1)redirect---302----临时跳转----旧网站无影响,新网站无排名(浏览器不会记住新域名)

        (2)permanet---301---永久跳转----新跳转网站有排名,旧网站排名清空(浏览器会记录新域名)

跳转模块:在server中执行

        (1)rewrite ^/$ https://$http_host redirect/permanet;

         (2)return 302/301 https://$http_host;

return:协议间的跳转,不做任何修改

rewrite:地址做改写

结束:(1)last  :本条规则匹配完成后,继续向下匹配新的location URI规则

        (2)break :本条规则匹配完成即终止,不再匹配后面的任何规则

当rewrite规则遇到break后,本location与其他location的所有rewrite/return规则都不再执行。
当rewrite规则遇到last后,本location里后续rewrite/return规则不执行,但重写后的url再次从头开始执行所有规则,哪个匹配执行哪个。

2.什么是Https

hhtps:超文本传输协议,是以安全为目标的http通道,简单来说是http的安全版。
3.为什么要使用Https

因为http不安全,当我们使用http网站时会遭到劫持和篡改,如果采用HTTPS协议那么数据在传输过程中是加密的,所以黑客无法窃取或者篡改数据报文信息,同时也避免网站传输时信息泄露。 

4.模拟不使用Https的劫持和篡改?

篡改的模块:在location中执行

sub_filter ‘被替换的内容‘‘ ‘替换的内容‘’
5.Https通讯是如何确定双方的身份?

通过权机构来验证双方身份---CA,简单的说,我们需要实现http协议,需要上CA机构申请证书

技术图片
6.Https证书类型、购买指南、注意事项?

(1)证书类型

ssl证书主要分为2大类:
第一类按照验证方式分:DV SSL证书 、OV SSL证书、 EV SSL证书
第二类按照域名数量来分:单域名SSL证书、多域名SSL证书、通配符证书

(2)购买指南

护1个域名 www docs.oldxu.com
保护5个域名 www images cdn test m docs.oldxu.com www.oldxu.com iamges.oldxu.com
通配符域名 *.oldboy.com
1套证书
保护所有的域名

(3)注意事项

  Https不支持续费,证书到期需重新申请新并进行替换。
  Https不支持三级域名解析,如 test.m.oldboy.com。
  Https显示绿色,说明整个网站的url都是https的,并且都是安全的。
  Https显示黄色,说明网站代码中有部分URL地址是http不安全协议的。
  Https显示红色,要么证书是假的,要么证书已经过期。


7.如何实现单台Https、又如何实现集群Https?

(1)环境准备:

nginx必有ssl模块  nginx-V(查看)   --with_http_ssl_module

创建存放ssl证书的路径
[root@Nginx ~]# mkdir -p /etc/nginx/ssl_key
[root@Nginx ~]# cd /etc/nginx/ssl_key

(2)生成证书 (密码1234)

[root@Nginx ~]# openssl genrsa -idea -out server.key 2048

(3)生成自签证书,同时去掉私钥的密码
openssl req -days 36500 -x509 \\
-sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

(4)配置nginx

[root@web01 conf.d]# cat s.oldux.com.conf
server
listen 443 ssl;
server_name s.oldxu.com;
root /code;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

location /
index index.html;


server
listen 80;
server_name s.oldxu.com;
return 302 https://$http_host$request_uri;

 


8.如何将Https集成集群架构实现全站Https?

(1)先配置好后端的web节点
(2)在负载均衡上申请证书(如果之前申请过也可以推送) <----
(3)配置nginx负载均衡--->http协议
(4).配置域名劫持
(5).配置nginx负载均衡--->转为https协议

[root@lb01 conf.d]# cat proxy_s.oldxu.com.conf
upstream webs
server 172.16.1.7:80;
server 172.16.1.8:80;

server
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

server_name s.oldxu.com;
location /
proxy_pass http://webs;
include proxy_params;

server
listen 80;
server_name s.oldxu.com;
return 302 https://$http_host$request_uri;


------------------------------------------------
[root@lb01 conf.d]# cat proxy_blog.oldxu.com.conf
upstream blog
server 172.16.1.7:80;
server 172.16.1.8:80;

server
listen 443 ssl;
server_name blog.oldxu.com;

ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

location /
proxy_pass http://blog;
proxy_next_upstream error timeout http_500 http_502 http_503;
include proxy_params;

server
listen 80;
server_name blog.oldxu.com;
return 302 https://$http_host$request_uri;

--------------------------------------------------------------------------------
[root@web02 conf.d]# cat blog.oldxu.com.conf
server
listen 80;
server_name blog.oldxu.com;
root /code/wordpress;

client_max_body_size 100m;
location /
index index.php;

location ~ \\.php$
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
include fastcgi_params;

 


9.有一个url地址不希望走https,其他正常走https?

需求: 部分URL走https,部分不走https?
s.oldxu.com/login ---> https

[root@lb01 conf.d]# cat proxy_s.oldxu.com.conf
upstream webs
server 172.16.1.7:80;
server 172.16.1.8:80;

server
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

server_name s.oldxu.com;
location /
proxy_pass http://webs;
include proxy_params;


server
listen 80;
server_name s.oldxu.com;

if ($request_uri ~* "^/login")
return 302 https://$http_host$request_uri;

location /
proxy_pass http://webs;
include proxy_params;


10.需求: 当用户请求s.oldxu.com/abc时走http,其他的所有都走https?
s.oldxu.com/ ---> https
s.oldxu.com/abc ---> http

[root@lb01 conf.d]# cat proxy_s.oldxu.com.conf
upstream webs
server 172.16.1.7:80;
server 172.16.1.8:80;

server
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

server_name s.oldxu.com;
location /
proxy_pass http://webs;
include proxy_params;


server
listen 80;
server_name s.oldxu.com;

if ($request_uri !~* "^/abc")
return 302 https://$http_host$request_uri;

location /
proxy_pass http://webs;
include proxy_params;

11.https优化相关的参数?
server
listen 443 ssl;
server_name nginx.bjstack.com;

ssl_certificate ssl_key/1524377920931.pem;
ssl_certificate_key ssl_key/1524377920931.key;
ssl_session_cache shared:SSL:10m;      #在建立完ssl握手后如果断开连接,在session_timeout时间内再次连接,是不需要在次建立握手,可以复用之前的连接
ssl_session_timeout 1440m;           #ssl连接断开后的超时时间
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;      #使用的TLS版本协议
ssl_prefer_server_ciphers on;        #Nginx决定使用哪些协议与浏览器进行通讯
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;        #配置加密套间

l ocation /
root /soft/code;
index index.html index.htm;


server
listen 80;
server_name nginx.bjstack.com;
return 302 https://$server_name$request_uri;

 

以上是关于HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

HTTPS 协议

HTTPS原理

https的实现

HTTP和HTTPS

浅析https

网络相关