文章目录
- [9. HTTPS安全认证](#9. HTTPS安全认证)
-
- [9.1 证书](#9.1 证书)
- [9.2 证书获取方式](#9.2 证书获取方式)
- [9.3 自签证书-openssl工具](#9.3 自签证书-openssl工具)
- [9.4 Nginx配置HTTPS](#9.4 Nginx配置HTTPS)
- [10. websocket转发配置](#10. websocket转发配置)
- 100.常遇的问题
-
- [100.1 host](#100.1 host)
9. HTTPS安全认证
http协议问题:
- 明文传输,有被第三方截取到数据信息的风险 (加密处
理)- 对于数据完整性:篡改数据(校验码)
- 身份验证:无法确认发送者身份(密钥对)
9.1 证书
证书 可以对身份进行验证,密钥对存在漏洞,黑客可以伪装
为发送者,生成密钥对,发送给接受者。
引入 第三方证书,证书通过加密算法对内容进行加密,并且证书可以明确的记录证书颁发机构的信息,证书使用者的相
关信息,从而接受者接收到证书,对证书信息通过公钥进行
验证,能够识别真实的发布者身份。
9.2 证书获取方式
- 通过官方机构购买证书
- 通过证书签发工具,自签证书。
9.3 自签证书-openssl工具
还有
cfssl
工具等等
- SSL数据传输原理
- Openssl自签发证书
证书包含的内容:
- 一对密钥对
- 颁发者和使用者信息
- 证书的相关信息
- Openssl命令应用
yum install openssl -y
-in filename
指定要加密的文件的路径
-out filename
指定加密后的文件的存放位置
-salt
自动插入一个随机数到文件中
-e
指定加密算法
-d
解密算法
- 自签发证书
openssl genrsa -out private.pem
#生成私钥
openssl rsa -in private.pem -pubout -out key.pem
# 根据生成对应公钥
req -new -x509 -key private.pem -out ca.crt -days 36500
# 生成自签证书(common name
随便写即可
)
9.4 Nginx配置HTTPS
xml
server {
listen 81 ssl;
server_name localhost;
ssl_certificate /usr/local/https/ca.crt;
ssl_certificate_key /usr/local/https/private.pem;
location / {
root html;
index index.html index.htm;
}
}
- 可以将http转化成https的输入,自动跳转
xml
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/https/ca.crt;
ssl_certificate_key /usr/local/https/private.pem;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
rewrite (.*) https://114.115.185.179/$uri redirect;
}
}
10. websocket转发配置
conf
server {
listen 80;
server_name example.com; # 你的域名
location /ws/ {
proxy_pass http://websocket_backend; # websocket_backend 是你的 WebSocket 服务器的 upstream 名称
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
类似于 HTTP 转发,websocket_backend 应该是一个 upstream 指令定义的服务器组。
上面的配置中proxy_set_header Upgrade $http_upgrade 和 proxy_set_header Connection "upgrade"
是 WebSocket 协议升级所需的标头。
100.常遇的问题
100.1 host
在 Nginx 中,当使用 proxy_pass
指令将请求转发到上游服务器时,默认情况下
,Host 头部字段的值会被设置为 proxy_pass 指令中指定的上游服务器的地址(通常是上游服务器的域名或 IP 地址和端口)
。这是为了防止上游服务器无法识别原始请求的 Host 头部字段值。
然而,如果你希望保持原始请求的 Host 头部字段值不变,你可以使用 proxy_set_header 指令来明确设置 Host 头部字段的值。通常,你会这样做来保持原始请求的 Host 值:
yml
location / {
proxy_pass http://your_upstream;
proxy_set_header Host $host;
# 其他可能的设置...
}