综合架构之安全访问服务

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


HTTPS安全访问概念介绍

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

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

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

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


综合架构之安全访问服务_第1张图片
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;
        }
    }

综合架构之安全访问服务_第2张图片
两种方式原理图

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


综合架构之安全访问服务_第3张图片
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;
  }
}

你可能感兴趣的:(综合架构之安全访问服务)