美文网首页
综合架构之安全访问服务

综合架构之安全访问服务

作者: 一只打不死的小强 | 来源:发表于2019-08-19 22:28 被阅读0次

    课程涉及
    1) HTTPS安全访问概念介绍
    2) HTTPS安全访问配置过程
    3) HTTPS安全页面跳转功能
    4) blog伪静态跳转功能
    5) 实现wordpress https访问结合负载均衡


    HTTPS安全访问概念介绍

    利用传统HTTP访问网站,安全隐患

    • a 无法保证数据机密性----->http是铭文的
      解决: 利用公钥和私钥 对数据进行加密 --- 对称加密算法(通讯双方都有钥匙和锁头,传输数据的时候用锁头锁住,传到对端时,用钥匙进行解密。网站的回复数据包时也会将内容用锁头锁住。)
    • b 无法保证数据完整性
      解决: 利用公钥和私钥 对数据进行加密 --- 对称加密算法(通讯双方都有钥匙和锁头)
      加密数据指纹(特征码加锁锁住) 保证数据完整性

    • c 无法对用户身份验证
      解决: 利用公钥和私钥 对数据进行加密 --- 非对称加密算法(通讯只有一方有秘钥对 第一方只有公钥)

    如何确定第一次访问的网站时真实的网站。


    image
    通过查询CA机构查询证书的真伪,每个网站都会有CA机构颁发的真实证书。

    HTTPS安全访问配置过程

    第一个历程: 创建私钥过程

    openssl genrsa -idea -out server.key 2048 (1024-2048)
        genrsa   --- 指定创建私钥类型
        idea     --- 需要给私钥设置密码信息
        out      --- 进行标准输出 
        2048     --- 密钥加密长度
    
    实际操作:
    [root@web01 ssh_key]# openssl genrsa -idea -out server.key 2048
        Generating RSA private key, 2048 bit long modulus
        ........+++
        .......+++
        e is 65537 (0x10001)
        Enter pass phrase for server.key: ---必须设置密码,否则会报错。另外,可防止私钥去申请证书,申请和同网站一样的证书,会不安全。
        Verifying - Enter pass phrase for server.key:
    

    openssl genrsa -out server.key 2048 --- 私钥没有密码信息(不安全)

    第二个历程: 利用私钥创建证书过程
    申请真正证书:
    云主机 --- 域名信息(备案) --- 证书(域名)
    系统创建假证:
    openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
    req --- 创建证书
    days --- 指定证书有效期
    x509 --- 证书的格式信息
    -nodes -newkey --- 去掉私钥文件密码信息
    -keyout --- 加载私钥文件
    -out --- 输出生成证书文件(假的)
    第三个历程: 利用网站服务加载证书
    # 加载ssl crt证书文件存放路径
    Syntax: ssl_certificate file; ---- 加载证书信息
    Default: —
    Context: http, server

    # 加载ssl key私钥文件存放路径
    Syntax:     ssl_certificate_key file;   ---- 加载私钥信息
    Default:    —
    Context:    http, server
    
    [root@web01 conf.d]# cat www.conf 
    server {
        listen            443 ssl;---->加载证书
        server_name  www.oldboy.com;
        ssl_certificate     /etc/nginx/ssh_key/server.crt;---->也可相对路径
        ssl_certificate_key /etc/nginx/ssh_key/server.key;
        location / {
            root   /html/www;
            index  index.php oldboy.jpg index.html index.htm;
        }
    

    通过负载均衡HTTPS访问

    方式一: 全网站证书配置
    第一个历程: web01 web02 web03 保存证书和私钥信息
    openssl genrsa -idea -out server.key 2048
    openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

    第二个历程: 进行nginx配置文件修改
    [root@web01 conf.d]# cat www.conf
    server {
    listen 443 ssl;
    server_name www.oldboy.com;
    ssl_certificate /etc/nginx/ssh_key/server.crt;
    ssl_certificate_key /etc/nginx/ssh_key/server.key;
    location / {
    root /html/www;
    index index.php oldboy.jpg index.html index.htm;
    }

    第三个历程: 修改负载均衡服务
    openssl genrsa -idea -out server.key 2048
    openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

    创建证书和密钥

    ssl_certificate     /etc/nginx/ssh_key/server.crt;
        ssl_certificate_key /etc/nginx/ssh_key/server.key;
        upstream default {
          server 10.0.0.7:443;
          #server 10.0.0.8:443;
          server 10.0.0.9:443;
        }   
        server {
            listen        443 ssl;
            server_name   localhost;
            include  proxy_params;
            location / {
           proxy_pass  https://default;
        }
        }
    

    方式二: 负载均衡证书配置
    第一个历程: 去掉web节点证书配置

        listen            80;
        server_name  www.oldboy.com;
        #ssl_certificate     /etc/nginx/ssh_key/server.crt;
        #ssl_certificate_key /etc/nginx/ssh_key/server.key;
    

    第二个历程: 编写负载均衡配置文件

        ssl_certificate     /etc/nginx/ssh_key/server.crt;
        ssl_certificate_key /etc/nginx/ssh_key/server.key;
        upstream default {
          server 10.0.0.7:80;
          #server 10.0.0.8:443;
          server 10.0.0.9:80;
        }
        server {
            listen        443 ssl;
            server_name   localhost;
            include  proxy_params;
            location / {
               proxy_pass  http://default;
            }
        }
    
    两种方式原理图
    HTTPS安全页面跳转功能
    实现跳转方式一:
    rewrite   ^/(.*)  https://ssl.oldboy.com$1 redirect; 
    http://ssl.oldboy.com /oldboy/oldboy.html  --> https://ssl.oldboy.com/oldboy/oldboy.html
    url       ^/(.*)uri不管时什么后面都原封不动的输出----》url进行跳转
    
    实现跳转方式二:   
        return    302      https://$server_name$request_uri;
        http://ssl.oldboy.com /oldboy/oldboy.html -- 302 --- https://ssl.oldboy.com/oldboy/oldboy.html
                $server_name     $request_uri
    
    方式一: 利用web服务器实现跳转    
        第一个历程: 修改web服务配置文件
        server {  
        listen           80;
        server_name      www.oldboy.com;
           rewrite ^/(.*)  https://www.oldboy.com/$1 redirect;
        }
        server {
            listen            443 ssl;
            server_name  www.oldboy.com;
            ssl_certificate     /etc/nginx/ssh_key/server.crt;
            ssl_certificate_key /etc/nginx/ssh_key/server.key;
            location / {
                root   /html/www;
                index  index.php oldboy.jpg index.html index.htm;
            } 
    
    第二个历程: 修改负载均衡配置  ---- >502,有问题???
        ssl_certificate     /etc/nginx/ssh_key/server.crt;
        ssl_certificate_key /etc/nginx/ssh_key/server.key;
        upstream default {
          server 10.0.0.7:80;
          #server 10.0.0.8:443;
          #server 10.0.0.9:80;
        }   
        server {
            listen        443 ssl;
            server_name   localhost;
            include  proxy_params;
               location / {
                 proxy_pass  https://default;
               } 
        }
        server {
            listen        80;
            server_name   localhost;
            include  proxy_params;
            location / {
           proxy_pass  http://default;
        }
        }
    

    实现wordpress网站实现HTTPs访问

    第一个历程: 正常访问wordpress页面,修改访问域名为https://blog.oldboy.com
    wordpress后台 -- 设置 -- 常规
    wordpress地址: https://blog.oldboy.com
    站点地址: https://blog.oldboy.com

    第二个历程: 配置web服务

        server {
        listen            80;
        server_name  blog.oldboy.com;
        client_max_body_size 5m;
        location / {
            root   /html/blog;
            index  index.php oldboy.jpg index.html index.htm;
        }
        location ~ \.php$ {
            root /html/blog;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
        fastcgi_param HTTPS on;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
          }
        }
    

    第三个历程: 配置负载均衡

        ssl_certificate     /etc/nginx/ssh_key/server.crt;
        ssl_certificate_key /etc/nginx/ssh_key/server.key;
        upstream default {
          server 10.0.0.7:80;
         server 10.0.0.8:443;
          server 10.0.0.9:80;
        }   
        server {
           listen        80;
           server_name   www.oldboy.com;
           return    302  https://$server_name$request_uri;
        }
        server {
            listen        443 ssl;
            server_name   localhost;
            include  proxy_params;
            location / {
           proxy_pass  http://default;
          }
        }
    

    wordpress网站实现伪静态功能---->?这种动态态变为静态显示

    第一个步骤:在wordpress后台修改页面配置
    登录后台---设置---固定链接---自定义结构--/%post_id%.html


    image

    第二个步骤:实现nginx伪静态配置
    blog.oldboy.com/oldboy.html

    第一个部分: 
    location / {                  
       try_files $uri $uri/ /index.php?$args==$uri;
                     去站点找这个信息 有没有这个目录 如果都没有直接访问伪静态的信息。
    }
    
    第二个部分:         http://blog.oldboy.com/4.html  -- 站点目录 --- 
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
                                      协议         url不变 变为后台配置的
    
    [root@web01 conf.d]# cat blog.conf 
    server {
      listen   80;
      server_name   blog.etiantian.org;
      rewrite /wp-admin$ $scheme://$host$uri/ permanent;
      location / {
            root   /html/blog;
            index  index.php index.html;
            try_files $uri $uri/ /index.php?$args==$uri;
      }
      location ~ \.php$ {
            root /html/blog;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param HTTPS on;
            fastcgi_pass  127.0.0.1:9000;
            include fastcgi_params;
      }
    }

    相关文章

      网友评论

          本文标题:综合架构之安全访问服务

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