美文网首页框架建设收集
第十二章:Nginx配置HTTPS

第十二章:Nginx配置HTTPS

作者: chenkang | 来源:发表于2019-10-17 08:34 被阅读0次

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

相关文章

  • # nginx https证书配置

    nginx https证书配置 一 前言 此文档针对于nginx配置反向代理使用https证书方法 nginx作为...

  • nginx https 配置

    nginx https 配置

  • nginx配置https

    nginx配置https https需要的证书我们已经申请到了,下面分享下nginx配置https的一些配置参数!...

  • Nginx配置https请求,以及Nginx+keepalive

    一、Nginx配置https请求 要实现Nginx配置https请求,安装的时候需要加上 --with-http_...

  • nginx配置https

    只配置443会导致http和https共存,只要再80里配置个重定向即可return 301 https://$s...

  • nginx https配置

    本地文件上传到服务器

  • Nginx https 配置

    准备环境阿里云 腾讯云部署好站点,且使用DNS解析到云服务器的IP地址 接下来就是配置HTTPS的关键步...

  • Nginx配置HTTPS

  • Nginx 配置 https

    从云服务提供商处申请证书 申请 https 证书教程-百度经验 申请下来的证书目录结构 下文中只拿 Nginx 来...

  • NGINX 配置 HTTPS

    首先是下载证书,我的是再阿里云里面,如果购买成功了,直接下载证书。里面会有两后缀分别为.key和.pem的个文件,...

网友评论

    本文标题:第十二章:Nginx配置HTTPS

    本文链接:https://www.haomeiwen.com/subject/lrqumctx.html