基于haproxy的全站https

栏目: 服务器 · 发布时间: 6年前

内容简介:基于haproxy的全站https

前一段时间新疆等地用户访问国务院官网,在首页上发现大量淫秽信息及广告,后反映给相关工作人员。经排查,并非是网站被劫持和入侵,而是运营商流量劫持导致的这个结果……此处且不论该时间后续事宜,作为一名优秀的运维工程师,我们面对运营商如此流氓的行为,应该怎么办? 当然是全站HTTPS了,目前,百度、阿里、腾讯等国内互联网巨头已经采用全站HTTPS。下面我将带你模拟搭建HTTPS。

基于haproxy的全站https

这是一个常见的haproxy架构型,我们现在采用此架构,将HTTPS部署在haproxy上。

第一步:创建CA证书

1.CA机自签名:

#创建数据库
[root@centos]cd /etc/pki/CA touch index.txt
[root@centos]echo 10 > serial
#生成私钥
[root@centos](umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
#自签证书
[root@centos]cd /etc/pki/CA
[root@centos]openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300

填写CA信息

基于haproxy的全站https

基于haproxy的全站https

2.客户端申请CA

生产私钥
[root@centos](umask 066;openssl genrsa -out /etc/pki/tls/private/test.key 1024)
生成申请文件
[root@centos]openssl req -new -key /etc/pki/tls/private/app.key -day 365 -out /etc/pki/tls/test.csr

填写CA信息(一定要和CA机中填写的一致)

基于haproxy的全站https

基于haproxy的全站https

将 test.csr 文件拷贝到CA机 /tmp 目录下(scp test.csr 172.18.32.1)

在CA机上批准颁发证书

[root@centos]openssl ca -in /tmp/test.csr -out /etc/pki/CA/certs/test.crt -days 100

certs 目录下已经生成证书文件(test.crt)

再拷回客户端就可以了。

第二步:配置Nginx服务器

#nginx1
[root@centos] cd /app
[root@centos]wget http://nginx.org/packages/centos/5/x86_64/RPMS/nginx-1.10.3-1.el5.ngx.x86_64.rpm
[root@centos] yum localinstall nginx-xxxxxx
[root@centos] service nginx start
[root@centos] echo "Test Page" > /usr/share/nginx/html/index.html

#nginx2
[root@centos] cd /app
[root@centos]wget http://nginx.org/packages/centos/5/x86_64/RPMS/nginx-1.10.3-1.el5.ngx.x86_64.rpm
[root@centos] yum localinstall nginx-xxxxxx
[root@centos] service nginx start
[root@centos] echo "Test Page" > /usr/share/nginx/html/index.html

第三步:修改haproxy配置

首先生成一个pem文件供haproxy使用

[root@centos] cat /app/test.crt  > test.pem
[root@centos] cat /app/test.key  >> test.pem

在修改hapeoxy配置

[root@centos] vim /etc/haproxy/haproxy.cfg

global
    log            127.0.0.1 local2
    chroot       /var/lib/haproxy
    pidfile        /var/run/haproxy.pid
    maxconn     4000
    user         haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
defaults
    mode                   http
    log                       global
    option                  httplog
    option                  dontlognull
    option                  http-server-close
    option    forwardfor    except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
frontend  nginx *:80
    bind *:443 ssl crt /app/https.pem
    bind *:80
    redirect scheme https if !{ ssl_fc }       #将所有http协议转为https协议
    default_backend web
    #acl invalid_src src 192.168.37.130
    #http-request allow if  invalid_src 
backend web
    balance     roundrobin
    server web1   192.168.37.135:80 check
    server web2   192.168.37.134:80 check
listen stats
        bind :9099
        stats enable
        stats uri /stats
        stats realm HAPorxy\ Stats\ Page
        stats auth admin:admin
        stats admin if TRUE
        stats hide-version

第四步:测试

测试访问http://192.168.37.133

会看到自动跳转到https了,此处会出现未认证证书的报错,忽略即可。

就算把CA证书导入浏览器,因为我们得CA是自己搭建的,是未被互联网信任的,所有仍会在地址前打×,所以,还是去购买一个认证吧。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Django 1.0 Template Development

Django 1.0 Template Development

Scott Newman / Packt / 2008 / 24.99

Django is a high-level Python web application framework designed to support the rapid development of dynamic websites, web applications, and web services. Getting the most out of its template system a......一起来看看 《Django 1.0 Template Development》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具