HTTPS安全证书基本概述

HTTPS安全证书基本概述

HTTPS简介

对称加密
非对称加密
我们首先需要申请证书,需要进行登记,登记我是谁,我是什么组织,我想做什么,到了登记机构在通过CSR发给CA,CA中心通过后,CA中心会生成一对公钥和私钥,那么公钥会在CA证书链中保存,公钥和私钥证书订阅人拿到后,会将其部署在WEB服务器上
1.当浏览器访问我们的https站点时,它会去请求我们的证书
2.Nginx这样的web服务器会将我们的公钥证书发给浏览器
3.浏览器会去验证我们的证书是否是合法和有效的。
4.CA机构会将过期的证书放置在CRL服务器,那么CRL服务的验证效率是非常差的,所以CA又推出了OCSP响应程序,OCSP响应程序可以查询指定的一个证书是否过期,所以浏览器可以直接查询OCSP响应程序,但OCSP响应程序性能还不是很高。
5.Nginx会有一个OCSP的开关,当我们开启后,Nginx会主动上OCSP上查询,这样大量的客户端直接从Nginx获取,证书是否有效

HTTPS证书购买指南

保护1个域名 www
保护一个明细域名,例如: buy.example.com,或next.example.com, 各个明细子域名都算一个域名
保护5个域名 www images cdn test m
www.oldboy.com  images.oldboy.com  cdn.oldboy.com  test.oldboy.com m.oldboy.com  tt.oldboy.com
通配符域名 *.oldboy.com
a.oldboy.com
test.oldboy.com

HTTPS注意事项

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

虚拟主机HTTPS配置

1.nginx必须有ssl模块

[root@Nginx ~]# nginx -V
 --with-http_ssl_module

2.创建存放ssl证书的路径

[root@Nginx ~]# mkdir -p /etc/nginx/ssl_key && cd /etc/nginx/ssl_key

3.使用openssl命令充当CA权威机构创建证书(生产不使用此方式生成证书,不被互联网认可的黑户证书)

[root@Nginx ssh_key]# openssl genrsa -idea -out server.key 2048
Generating RSA private key, 2048 bit long modulus
.....+++
#记住配置密码, 我这里是1234
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

4.生成自签证书,同时去掉私钥的密码

[root@Nginx ssl_key]# openssl req -days 36500 -x509 \
-sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

5.一台web配置

[root@web01 conf.d]# cat s.oldboy.com.conf 
server {
    listen 80;
    server_name s.oldboy.com;
    return 302 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name s.oldboy.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;

    location / {
        root /code/s;
        index index.html;
    }
}

负载均衡443+web配置80

1.后端的web配置http网站

[root@web01 conf.d]# cat s.oldboy.com.conf 
server {
    listen 80;
    server_name s.oldboy.com;
    location / {
        root /code/s;
        index index.html;
    }
}

2.负载均衡配置80和443端口

[root@lb01 conf.d]# cat proxy_s.oldboy.com.conf 
upstream https {
    server 172.16.1.7:80;
    server 172.16.1.8:80;
}
server {
    listen 80;
    server_name s.oldboy.com;
    return 302 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name s.oldboy.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
        proxy_pass http://https;
        include proxy_params;
    }
}

配置一台wordpress站点的https

1.准备好nginx配置文件

2.准备好证书

3.修改lb配置

[root@lb01 conf.d]# cat proxy_blog.oldboy.com.conf 
upstream blog_pools {
    server 172.16.1.7:80;
    server 172.16.1.8:80;
}

server {
    listen 80;
    server_name blog.oldboy.com;
    return 302 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name blog.oldboy.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;

    location / {
        proxy_pass http://blog_pools;
        include proxy_params;
    }
}

4.wordpress早期安装如果是使用http方式, 那开启https后会导致,wordpress出现加载或无法登陆问题。

# web节点增加此参数
location ~ \.php$ {
    ...
    fastcgi_param  HTTPS on;
    ...
}

配置1台nginx四层负载均衡,2台7层nginx负载,4台后端web节点实现全栈https

需要使用的主机

角色          弹性公网        内网网络        协议          端口
tcp_proxy       47.104.29.64    172.16.1.164    tcp             80/443
http_proxy01                    172.16.1.165    http/https      80/443
http_proxy02                    172.16.1.166    http/https      80/443
http_web01                      172.16.1.167    http    80
http_web02                      172.16.1.168    http    80
http_web03                      172.16.1.169    http    80
http_web04                      172.16.1.170    http    80

1.Nginx四层负载均衡配置如下

[root@tcp_lb conf.c]# cat tcp_lb.bjstack.com.conf
stream {
    upstream proxy_lb_bjstack {
        server 172.16.1.165:80;
        server 172.16.1.166:80;
    }

    upstream proxy_lb_bjstack_443 {
        server 172.16.1.165:443;
        server 172.16.1.166:443;
    }

    server {
        listen 80;
        proxy_pass proxy_lb_bjstack;
    }

    server {
        listen 443;
        proxy_pass proxy_lb_bjstack_443;
    }
}

2.lb01与lb02配置七层负载均衡

[root@lb-node1 ~]# cat /etc/nginx/conf.d/proxy_lb.bjstack.com.conf
upstream node {
    server 172.16.1.167:80;
    server 172.16.1.168:80;
    server 172.16.1.169:80;
    server 172.16.1.170:80;
}

server {
    listen 80;
    server_name lb.bjstack.com;

    location / {
        return 302 https://$server_name$request_uri;
    }
}

server {
    listen 443;
    server_name lb.bjstack.com;
    ssl on;
    ssl_certificate   ssl_key/server.crt;
    ssl_certificate_key  ssl_key/server.key;
    location / {
        proxy_pass http://node;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

3.后端多台web节点配置

[root@web02 ~]# cat /etc/nginx/conf.d/web_lb.bjstack.com.conf
server {
    listen 80;
    server_name lb.bjstack.com;

    location / {
        root /code;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容