SSL介绍
公钥私钥就好比箱子和钥匙,通信双方没人都有一个箱子和一把钥匙,自己的箱子只有自己的钥匙才能打开,而且箱子不能暴力拆开(公钥加密的内容不能暴力破解)
SSL通信简单介绍
角色:
- 浏览器:浏览器公钥(箱子A) 浏览器私钥(钥匙A)
- 服务器:服务器公钥(箱子B) 服务器私钥(钥匙B)
场景:
- 浏览器:发送Hello消息
- 服务器:返回服务器公钥(箱子B)
- 浏览器:服务器公钥如果是根证书认证的说明就是安全的(箱子B的标识是大家公认的无法仿造),然后浏览器使用服务器公钥加密自己的浏览器公钥后发送给服务器(用箱子B套住箱子A然后锁上送回去)
- 服务器:服务器私钥解码数据得到浏览器公钥(用钥匙B打开箱子B获取到箱子A)
- 后面服务器只要把要发送的数据使用浏览器公钥加密(把东西放入箱子A锁上发送),浏览器只要把要发送的数据使用服务器公钥加密(把东西放入箱子B锁上发送),那么发送的数据就只能被双方解密(只有浏览器有箱子A的钥匙,并且只有服务器有箱子B的钥匙),就算加密消息被截获也不会泄密(别人没有钥匙,没法暴力打开箱子)
Haproxy
环境搭建
### 宿主机:64位 Ubuntu 16.04 TLS
# apt install lxc
# lxc-create -n web -t download -- -d ubuntu -r xenial -a amd64
# apt install haproxy
在容器部署apache2服务
# lxc-attach -n web
# apt install apache2
# mkdir -p /var/www/html
# chown -R www-data:www-data /var/www/
# a2enmod ssl
# vim /etc/apache2/sites-enabled/50-web.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
documentRoot /var/www/html
ServerName apache
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
</IfModule>
# systemctl restart apache2
# halt
### 克隆容器
# lxc-copy -B aufs -s -n web -N apache
Haproxy透传配置
# lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6
apache RUNNING 0 - 10.0.3.197 -
web STOPPED 0 - - -
# vim /etc/haproxy/haproxy.cfg
################## 配置文件说明如下 ##################
global
log 127.0.0.1 local0 #日志输出配置,所有日志都记录在本机,通过local0输出
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
maxconn 4096
tune.bufsize 384000
stats socket /var/run/haproxy.stat level admin mode 600
user haproxy #所属用户
group haproxy #所属用户组
daemon #以后台形式运行haproxy
defaults
log global
option dontlognull
option redispatch
retries 3
timeout client 50s
timeout connect 10s
timeout server 50s
maxconn 4096
frontend https-front
bind *:443
option tcplog
mode tcp # 透传
default_backend web-back
backend web-back
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server apache 10.0.3.197:443
frontend http-front
bind *:80
option httplog
mode http
default_backend http-back
backend http-back
mode http
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server apache 10.0.3.197:80
######################################################