第1章 HTTPs安全访问
HTTP中的s代表的时secuer更安全的访问
访问页面有三点安全问题是需要考虑的
(1) 数据的机密性 数据在传输时明文传输的话被人截取就会知道传输的信息 造成数据的外露不安全
(2) 数据的完整性 数据被第三方截取后会 如果被篡改了 将会造成互联通讯双方所表达的意思不一致 , 因此对于不完整的数据信息 接收方应该进行判断 如果完整性验证错误,就拒绝接收相应信息数据
(3) 身份验证问题
网络传输数据时 有种情况是传输的双方是第一次建立连接,进行通讯 既然是第一次连接 如何确认网站身份就是关键 如果一开始连接的对象就是错误的 那么之后传输的信息也都不是预期想要的(可能是被改变的病毒信息)
HTTPS安全访问加密方式
(1) 数据机密性 利用对称加密算法进行加密 先将数据信息进行加密 在利用公钥和密钥保护加密算法信息 实现数据机密性
(2) 数据完整性 利用对称加密算法进行加密 先将数据生成特征码 在利用公钥私钥保护好特征码 利用特征码验证数据完整性 私钥存放在服务器上公钥进行分发
(3) 身份认证问题 利用非对称加密算法 用户访问时会得到网站的证书信息 通过向CA证书颁发机构进行验证 确定站点的合法性
第2章 实现HTTPs安全访问网站
虚拟环境创建
第一步: 创建私钥和公钥(证书)信息
在nginx目录下创建
创建私钥文件
cd /etc/nginx/
openssl genrsa -idea -out server.key 2048
genrsa 创建什么类型私钥
idea 需要给私钥文件设置密码
out 创建生成一个私钥文件
2048 生成密钥加密位数 一般为1024/2048 (2的倍数)
创建证书
openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
req --- 创建一个证书文件
days --- 证书文件有效期(默认 天)
x509 --- 证书文件格式
sha256 --- 指定生成证书算法
nodes --- 去除私钥的密码生成证书
keyout --- 指定加载私钥文件
out --- 生成的证书信息
交互信息过程
(1) 国家
(2) 地区
(3) 公司
(4) 组织
(5) 主机名
(6) 邮箱地址
第二步: 编写nginx服务配置文件 开启HTTPs功能 并加载私钥公钥
利用ssl模块进行开启 这里实体机和虚拟机差不多
配置例子
ssl_certificate ssl_key/server.crt;
加载指定目录下指定公钥
ssl_certificate_key ssl_key/server.key;
加载指定目录下指定私钥
利用这两条模块进行加载公钥和私钥
[root@web02 nginx]# cat /etc/nginx/conf.d/www.conf
访问请求进行HTTP访问跳转HTTPS功能配置
server {
listen 80;
server_name www.oldboy.com;
rewrite ^/(.*)$ https://$host/$1 redirect; 进行匹配跳转 将匹配到的HTTP请求临时跳转成HTTPS
}
server {
listen 443 ssl; 指定监控HTTPS服务端口 443 ssl代表开启https服务
server_name www.oldboy.com;
root /html/www;
index index.html;
ssl_certificate server.crt; 在server下编写加载的私钥公钥路径
ssl_certificate_key server.key;
}
最后重启nginx服务 测试是否进行跳转
负载均衡实现HTTPs访问(静态)
两者方式能够实现访问负载均衡 进行跳转
方式一 全网服务器都配置证书和私钥信息
当用户进行访问时 lb负载服务器进行跳转 跳转成https 然后将https请求抛给后端web节点 后端需要配置监听443端口 并开启ssl (https服务)
负载均衡服务器配置实例
Nginx配置的负载均衡服务器 进行https跳转过程
upstream oldboy { 指定用户组 并指定抛送端口为443(https服务端口)
server 10.0.0.7:443;
server 10.0.0.8:443;
server 10.0.0.9:443;
}
server {
listen 80; 指定监听接收http请求的端口
server_name localhost;
rewrite ^/(.*)$ https://$host/$1 redirect;
指定将http请求跳转成https请求 并不修改URI信息
}
server {
listen 443 ssl; 监听端口为443 并把SSL(https)服务开启
server_name localhost; 因为要做负载处理 所以这里随意填 保持模块格式
ssl_certificate server.crt; 指定要加载的公钥路径
ssl_certificate_key server.key; 指定要加载的私钥路径
location / { 固定格式进行负载均衡
proxy_pass https://oldboy;
指定向后端抛送的是https请求
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
第二步 配置web服务器上web服务配置文件
server {
listen 443 ssl; 指定监听443端口抛过来的https请求 ssl代表开启https服务
server_name www.oldboy.com;
root /html/www;
index index.html;
ssl_certificate server.crt; 指定加载的公钥私钥地址信息
ssl_certificate_key server.key;
}
方式二 负载均衡服务器配置https跳转 但是向后端抛送时发送的时http请求
负载均衡服务器配置过程
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;
指定向后端抛送时 抛送http请求
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
第二步 配置web服务器上web服务配置文件
server { 基础配置即可 接收http请求处理后返回回去
listen 80;
server_name www.oldboy.com www.jd.com;
root /html/www;
index index.html;
}
重启服务后进行测试 查看是否能够访问
负载均衡实现https访问动态页面
实现方法和静态转换https服务差不多
废话不多说 直接上代码 还是主要的就那几个
第一个历程: 修改配置文件信息
修改负载均衡配置文件: 基本和原来的没啥区别
upstream oldboy {
server 10.0.0.8:443;
}
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;
注意: 向后端抛送的是 https请求
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
web服务器配置过程
server {
listen 443 ssl; 指定监控https服务的443端口 ssl开启https服务
server_name blog.oldboy.com; 指定域名
ssl_certificate server.crt; 在server下指定证书和密钥地址
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; 指定开启https服务 在动态网页传参中设置
include fastcgi_params;
}
}
第二个历程: 修改wordpress后台信息
修改地址为 https://blog.oldboy.com
第三个历程: 重启nginx程序
第3章 phpcmsV9数据库修改https
数据库配置https跳转
(1) 默认数据库指向网站信息存放位置
mysql> select domain from phpcmsv9.v9_site;
+-------------------------+
| domain |
+-------------------------+
| http://www.oldboy.com/ |
+-------------------------+
1 row in set (0.00 sec)
(2) 数据库中修改指向网站信息为https使用命令
mysql> update phpcmsv9.v9_site set domain = 'https://www.oldboy.com/';
修改数据库指向网站信息
第4章 wordpress做https跳转
https跳转配置
在后台修改URL为https访问 再把nginx配置文件修改
可在数据库内输入命令查看是否修改成功
mysql> select * from wp_options where option_id="1";
查看表内的第一行内容