美文网首页
HTTPS-day10

HTTPS-day10

作者: Linux运维 | 来源:发表于2020-05-06 22:41 被阅读0次

    一、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

          本文链接:https://www.haomeiwen.com/subject/audzghtx.html