综合架构_网络安全访问(https)
概念介绍HTTPs(secure)
ssl -- 安全套接字层
HTTP数据包是明文
https提高了安全:
01.保证数据机密性
02.保证数据完整性
03.保证通讯可靠性
1.数据的机密性
传输的数据可能会被第三方随时看到
解决方式:
a>
b> 对称加密算法 私钥 和 公钥 发送发
2.数据的完整性
传输的数据不能随意让任何人进行修改
解决方式:
对称加密算法。公钥和私钥 保护好特征码
3.身份认证问题
第一次通讯时,需要确认双方的身份正确
总结:
对称加密算法: 通讯双方。都有钥匙和锁头
非对称加密算法: 通讯双发, A 主机上会有钥匙和锁头,B主机上只有锁
解决:非对称加密算法 私钥在服务器上保存好,公钥进行分发
公钥 ===证书(身份证)
CA证书颁发机构
实现HTTP向HTTPS跳转访问
实现网站伪静态配置
第一个历程:创建私钥和公钥(证书)
[root@web01 conf.d]# rpm -qa openssl
openssl-1.0.2k-19.el7.x86_64
cd /etc/nginx/
openssl genrsa -idea -out server.key 2048 【创建私钥文件】 genrsa --- 创建什么类型私钥 idea --- 需要给私钥文件设置密码 out --- 创建生成一个私钥文件 openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt 【假证】 req --- 创建一个证书文件 days --- 证书文件有效期(默认 天) x509 --- 证书文件格式 sha256 --- 指定生成证书算法 nodes --- 去除私钥的密码生成证书 keyout --- 指定加载私钥文件 out --- 生成的证书信息
第二个历程: 在nginx程序中,编写配置文件开启HTTPS功能,加载私钥和公钥信息
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
[root@web02 nginx]# cat /etc/nginx/conf.d/www.conf
server {
listen 443 ssl;
server_name www.oldboy.com www.jd.com;
root /html/www;
index index.html;
ssl_certificate server.crt;
ssl_certificate_key server.key;
}
第三个历程:
方法一:进行HTTP访问跳转HTTPS功能配置
server { listen 80; server_name www.oldboy.com; rewrite ^/(.*)$ https://$host/$1 redirect; 【permanent】 } server { listen 443 ssl; server_name www.oldboy.com www.jd.com; root /html/www; index index.html; ssl_certificate server.crt; ssl_certificate_key server.key; }
方法二:
利用负载均衡实现HTTPs访问过程
方式一: 全网服务器都配置证书和私钥信息
用户客户端访问 --- lb01 --- web节点 www.oldboy.com http://www.oldboy.com https://www.oldboy.com ---> listen 443 ssl 第一个历程: 编写lb负载均衡配置文件 upstream oldboy { #server 10.0.0.7:443; server 10.0.0.8:443; #server 10.0.0.9:80; } server { listen 80; server_name localhost; rewrite ^/(.*)$ https://$host/$1 redirect; 【permanent】 } server { listen 443 ssl; server_name localhost; ssl_certificate server.crt; ssl_certificate_key server.key; location / { proxy_pass https://oldboy; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } } 第二个历程: web节点配置 server { listen 443 ssl; server_name www.oldboy.com www.jd.com; root /html/www; index index.html; ssl_certificate server.crt; ssl_certificate_key server.key; }
方式二: 负载均衡服务器配置证书和私钥信息
用户客户端访问 --- lb01 ---> web节点 www.oldboy.com http://www.oldboy.com https://www.oldboy.com ---> listen 80 第一个历程: 负载均衡配置信息 upstream oldboy { #server 10.0.0.7:443; server 10.0.0.8:80; #server 10.0.0.9:80; } server { listen 80; server_name localhost; rewrite ^/(.*)$ https://$host/$1 redirect; } server { listen 443 ssl; server_name localhost; ssl_certificate server.crt; ssl_certificate_key server.key; location / { proxy_pass http://oldboy; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } } 第二个历程: web节点配置信息 server { listen 80; server_name www.oldboy.com www.jd.com; root /html/www; index index.html; }
利用HTTPs访问动态页面 wordpress
第一个历程: 修改配置文件信息 修改负载均衡配置文件: upstream oldboy { #server 10.0.0.7:443; server 10.0.0.8:443; #server 10.0.0.9:80; } server { listen 80; server_name localhost; rewrite ^/(.*)$ https://$host/$1 redirect; } server { listen 443 ssl; server_name localhost; ssl_certificate server.crt; ssl_certificate_key server.key; location / { proxy_pass https://oldboy; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } } web服务器配置过程 server { listen 443 ssl; server_name blog.oldboy.com blog.oldgirl.com; ssl_certificate server.crt; ssl_certificate_key server.key; location / { root /html/blog; index index.php index.html; } location ~ \.php$ { root /html/blog; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; include fastcgi_params; } } 第二个历程: 修改wordpress后台信息 修改地址为 https://blog.oldboy.com
第三个历程: 重启nginx程序