第十二章:Nginx配置HTTPS

第一节:HTTPS基础知识

  1. https含义:是以安全为目标的HTTP通道,简单讲是HTTP的安全版
  2. http端口:80 https端口:443
  3. 作用:用于加密用户与网站之间的数据传输
  4. HTTPS和HTTP的区别主要为以下四点:
  • https协议需要到ca申请证书,一般免费证书很少,需要交费。
  • http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
域名证书类型 域名
单域名证书 www.mysun.com
多域名证书 www.mysun.com ,www.myqu.com
通配符域名 *.mysun.com

工作中选择域名过程:
1.先收集好所有的域名
2.过滤分析一共有几种类型的域名
*.www.mysun.com
*.mysun.com

[root@lb01 ~]# sed -nr 's#^([a-Z0-9]+).(.*$)#\2#gp' name.txt |sort|uniq -c|sort
2 www.mysun.com
3 mysun.com

第二节: 简单nginx配置https

1.检查Nginx是否有SSL模块

nginx -V 进行查看是否有:
        --with-http_ssl_module

2.创建证书目录并生成证书

mkdir /etc/nginx/ssl_key 
cd /etc/nginx/ssl_key
openssl genrsa -idea -out server.key 2048

openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

3.创建nginx配置文件

[root@web01 /etc/nginx/conf.d]# cat ssl.conf 
server {
    listen 443 ssl;
    server_name ssl.oldboy.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
        root /code;
        index index.html;
    }
}

4.重启nginx

nginx -t 
systemctl restart nginx 

5.写入测试文件

echo "web01 SSL" > /code/index.html

第三节: 强制http跳转到https

1.配置nginx配置文件

[root@web01 /etc/nginx/conf.d]# cat ssl.conf 
server {
    listen 80;
    server_name ssl.oldboy.com;
    rewrite ^(.*) https://$server_name$1 redirect;
}

server {
    listen 443 ssl;
    server_name ssl.oldboy.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
        root /code;
        index index.html;
    }
}

第四节:Nginx集群配置https

1.复制已经创建好的证书到其他的web服务器

cd /etc/nginx/ 
scp -r ssl_key 10.0.0.8:/etc/nginx/
scp -r conf.d/ssl.conf 10.0.0.8:/etc/nginx/conf.d/
echo "$(hostname) SSL" > /code/index.html

2.复制已经创建好的证书到lb服务器

cd /etc/nginx/ 
scp -r ssl_key 10.0.0.5:/etc/nginx/

3.第一种情况:lb服务器http强制跳转https并代理到后端的https

lb服务器配置:

[root@lb01 /etc/nginx/conf.d]# cat ssl.conf 
upstream ssl_pools {
   server 172.16.1.7:443;
   server 172.16.1.8:443;
}

server {
   listen 80;
   server_name  ssl.oldboy.com ;
   rewrite ^(.*) https://$server_name$1 redirect;
}

server {
    listen 443 ssl;
    server_name ssl.oldboy.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
      proxy_pass  https://ssl_pools;
      include proxy_params;
    }
}

web服务器配置:
[root@web02 /etc/nginx/conf.d]# cat ssl.conf

   server {
        listen 443 ssl;
        server_name ssl.oldboy.com;
        ssl_certificate ssl_key/server.crt;
        ssl_certificate_key ssl_key/server.key;
        location / {
            root /code;
            index index.html;
        }
    }

4.第二种情况:lb服务器负责https加解密,后端web服务器还是80端口

1.lb服务器配置

[root@lb01 ~]# cat /etc/nginx/conf.d/ssl.conf 
upstream ssl_pools {
   server 172.16.1.7;
   server 172.16.1.8;
}

server {
   listen 80;
   server_name  ssl.oldboy.com ;
   rewrite ^(.*) https://$server_name$1 redirect;
}

server {
    listen 443 ssl;
    server_name ssl.oldboy.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
      proxy_pass  http://ssl_pools;
      include proxy_params;
    }
}

2.web服务器配置

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

第五节:wordpress配置https

lb服务器配置

1.配置nginx配置文件

[root@lb01 ~]# cat /etc/nginx/conf.d/ssl.conf 
upstream ssl_pools {
   server 172.16.1.7;
   server 172.16.1.8;
}

server {
   listen 80;
   server_name  blog.mysun.com;
   rewrite ^(.*) https://$server_name$1 redirect;
}

server {
    listen 443 ssl;
    server_name blog.mysun.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
      proxy_pass  http://ssl_pools;
      include proxy_params;
    }
}

2.配置fastcgi的https相关参数

echo "fastcgi_param  HTTPS on;" >> /etc/nginx/fastcgi_params

web服务器配置:(2台web服务器都需要配置)

3.web服务器nginx配置

[root@web01 ~]# cat /etc/nginx/conf.d/blog.conf 
server {
    listen 80;
    server_name blog.mysun.com;
    root /code/wordpress;
    index index.php index.html;

    location ~ \.php$ {
        root /code/wordpress;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4.重启nginx

nginx -t 
systemctl restart nginx 

第六节:常见报错总结:

1.hosts文件条目重复(杂乱)

2.hosts文件地址写错

3.lb服务器的地址池端口没有给成443

4.web02服务器没有配置server_name导致访问到web02的默认首页

第七节: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获取,证书是否有效

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容