HTTPS-day10

一、HTTPS的基本概述

1.为什么要使用https

  • http使用的是明文传输,在传输重要信息时不能保证安全。(交易信息、账户信息、银行卡号......)监听获取。

  • 而https是密文传输的,能够保证信息的安全,避免了网站传输的信息被泄露。

2.什么是https
SSL(网景公司,套接字安全协议)------>TLS(传输层安全协议)

3.TLS协议是如何实现明文消息被加密的
TLS与SSL在传输层和应用层之间对网络连接进行加密

1.提供数据安全,保证数据尽可能不被泄露。
2.提供数据的完整性,保证数据在传输的过程中,不被修改或者篡改数据。
3.对应用层交给传输层的数据进行加密与解密。

4.HTTPS加密模型

名称 含义
对称加密 相同的秘钥
非对称加密 一对秘钥,公钥加密,私钥加密

CA机构:可信的组织机构,主要用来颁发证书的

5.HTTPS 是如何实现加密和解密的,TLS/通讯过程

https采用的是混合加密算法:使用了对称加密和非对称加密。

前提:CA机构申请证书,部署在web服务器上

二、使用https的操作

1.openssl方法配置https证书

[root@web01 ~]# mkdir /etc/nginx/ssl_key
[root@web01 ~]# cd /etc/nginx/ssl_key
[root@web01 ssl_key]# openssl genrsa -idea -out server.key 2048
[root@web01 ssl_key]# openssl req -days 36500 -x509 \
-sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

[root@web01 ~]# ll /etc/nginx/ssl_key/
total 8
-rw-r--r-- 1 root root 1359 May  7 10:45 server.crt
-rw-r--r-- 1 root root 1704 May  7 10:45 server.key

2.在Nginx中配置证书

[root@web01 ~]# cat /etc/nginx/conf.d/s.mrche.xyz.conf
server {
      listen 443 ssl;
      server_name s.mrche.xyz;
      root /code;

      ssl_certificate ssl_key/server.crt;
      ssl_certifcate_key ssl_key/server_key;
      ssl_protocol TLSv1.2;
      location / {
            index index.html;
      }
}
#当用户请求http://s.mrche.xyz 则强制跳转到https协议
server {
      listen 80;
      server_name s.mrche.xyz;
      return 302 https://$server_name$request_uri;
}

3.一个LNMP架构的网站,如果在负载均衡上配置证书,web服务器就不需要配置了,只需要添加fastcgi_param HTTPS on; 就可以了

4.模拟银行主页面点击登录按钮,跳转到https协议

[root@web01 ~]# cat /etc/nginx/conf.d/yh.mrche.xyz.conf
server {
      listen 80;
      server_name yh.mrche.xyz;
      root /code;

      location / {
            index index.html;
      }
      location /login {
            return 302 https://login.mrche.xyz;
      }
}

[root@web01 ~]# cat /etc/nginx/conf.d/login.mrche.xyz.conf
server {
      listen 80;
      server_name login.mrche.xyz;
      root /code/login;
      ssl_certificate ssl_key/server.crt;
      ssl_certificate_key ssl_key/server.key;
     
      location / {
            return 302 https://login.mrche.xyz;    
      }
}

三、HTTPS的优化

减少CPU的运算量
SSL的运行计算需要消耗额外的CPU资源,SSL通讯过程中“握手”阶段的运算最占用CPU资源

1.设置worker进程数设置为等于CPU处理器的核心数。worker——processes auto;
2.启用 keepalive 长连接,一次连接多次请求。

3.启用SSL会话缓存参数,避免进行多次SSL握手。

server {
      listen 443 ssl;
      server_name www.example.com;
      
      keepalive_time 70;    #设置长连接
      ssl_certificate www.example.com.crt;
      ssl_certificate_key www.example.com.key;
      ssl_protocol TLSv1.2;

      #在建立完ssl握手后如果断开链接,在session_timeout时间内再次连接,是不需要再次建立三次握手,直接可以服用之前的连接。
      ssl_session_cache chared:SSL:10m;    #1M缓存空间能存储4000个会话数量
      ssl_session_timeout 1024m;    #配置会话超时时间(默认5分钟) 
}

四、阿里云实现https(自行体验)

你可能感兴趣的:(HTTPS-day10)