nginx 之 https 证书配置
HTTPS原理和作用
为什么需要HTTPS
原因:HTTP不安全
- 传输数据被中间人盗用、信息泄露
- 数据内容劫持、篡改
HTTPS协议的实现
对传输内容进行加密以及身份验证
对称加密:加密秘钥和解密秘钥是对等的,一样的
非对称加密:
HTTPS加密协议原理:
中间人伪造客户端和服务端:(中间人可以伪装成客户端和服务端,中间人可以对数据进行劫持,不安全)
HTTPS的CA签名证书:(服务端和客户端通过实现约定好的证书进行认证,都会对证书进行校验,所以中间人没法劫持数据,故安全)
HTTPS 配置使用
证书签名生成CA证书
先确认环境:已经安装openssl和nginx已经编译ssl的模块
1 | openssl version |
1 | nginx -V |
1 | rpm -qa | grep open |
生成秘钥和CA证书步骤:
步骤1、生成key秘钥
步骤2、生成证书签名请求文件(csr文件)
步骤3、生成证书签名文件(CA文件)
证书签名生成和Nginx的HTTPS服务场景演示
先创建一个用来放秘钥的文件夹 ssl_key
1 2 | cd /etc/nginx/ mkdir ssl_key |
输入加密算法
1 | openssl genrsa -idea -out jesonc.key 1024 |
回车,会让输入密码,这里设置为123456,完成后会生成一个.key的文件
生成证书签名请求文件(csr文件)
1 | openssl req -new -key jesonc.key -out jesonc.csr |
查看生成的请求文件
生成证书签名文件(CA文件) 打包 有效期设置了 10 年
1 | openssl x509 -req -days 3650 -in jesonc.csr -signkey jesonc.key -out jesonc.crt |
Nginx的HTTPS语法配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ssl开关 配置语法:ssl on|off; 默认状态:ssl off; 配置方法:http、server ssl证书文件 配置语法:ssl_certificate file; 默认状态:- 配置方法:http、server ssl密码文件 配置语法:ssl_certificate_key file; 默认状态:ssl off; 配置方法:http、server |
进入/etc/nginx/conf.d/
test_https.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | server { listen 443;# https 监听的是 443端口 server_name 192.168.1.112 www.zhangbiao.com; keepalive_timeout 100; ssl on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_certificate /etc/nginx/ssl_key/jesonc.crt; # 证书路径 ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; # 请求认证 key 的路径 index index.html index.htm; location / { root /opt/app/code; } } |
配置好之后,关闭和启动,都需要数之前设置的密码
关闭
1 | nginx -s stop -c /etc/nginx/nginx.conf |
启动
1 | nginx -c /etc/nginx/nginx.conf |
访问
1 | https: //www.zhangbiao.com/index.html |
基于Nginx的HTTPS服务_实战场景配置苹果要求的openssl后台HTTPS服务
配置苹果要求的证书:
- 1、服务器所有的连接使用TLS1.2以上的版本(openssl 1.0.2)
- 2、HTTPS证书必须使用SHA256以上哈希算法签名
- 3、HTTPS证书必须使用RSA2048位或ECC256位以上公钥算法
- 4、使用前向加密技术
首先看openssl版本:,为1.0.1,需要升级
查看当前使用的自签算法类型:openssl x509 -noout -text -in ./jesonc.crt,使用的是sha256,位数是1024位,都不符合规定
1 | openssl x509 -noout -text -in ./jesonc.crt |
升级openssl,使用shell脚本升级
update_openssl.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/bin/sh #jeson@imoocc.com cd /opt/download wget https: //www.openssl.org/source/openssl-1.0.2k.tar.gz tar -zxvf openssl-1.0.2k.tar.gz cd openssl-1.0.2k ./config --prefix=/usr/local/openssl make && make install mv /usr/bin/openssl /usr/bin/openssl.OFF mv /usr/include/openssl /usr/include/openssl.OFF ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl echo "/usr/local/openssl/lib" >>/etc/ld.so.conf ldconfig -v openssl version -a |
执行脚本
1 | sh ./update_openssl.sh |
版本升级成功,查看版本
1 | openssl version |
制作复合苹果的证书
修改算法
1 | openssl req -days 36500 -x509 -sha256 -nodes -new^Cy rsa:2048 -keyout jesonc_apple.crt |
修改配置文件
test_https.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | server { listen 443; server_name 192.168.1.112 www.zhangbiao.com; keepalive_timeout 100; ssl on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_certificate /etc/nginx/ssl_key/jesonc_apple.crt; ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; index index.html index.htm; location / { root /opt/app/code; } } |
检查配置语法,并重载
1 2 | nginx -tc /etc/nginx/nginx.conf nginx -s reload -c /etc/nginx/nginx.conf |
查看443端口是否启动
1 | netstat -luntp | grep 443 |
访问
1 | https: //www.zhangbiao.com/index.html |
成功返回地页面
HTTPS 服务优化
方法一:
激活keepalive 长连接
方法二:
设置 session 缓存
test_https.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | server { listen 443; server_name 116.62.103.228 jeson.t.imooc.io; keepalive_timeout 100; # 长连接 100s ssl on; ssl_session_cache shared:SSL:10m; # 设置 10M 的缓存 ssl_session_timeout 10m; # session 过期时间 10 分钟 ssl_certificate /etc/nginx/ssl_key/jesonc_apple.crt; ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; index index.html index.htm; location / { root /opt/app/code; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了