nginx 之 https 证书配置

摘要:
为什么需要HTTPS作为其原理和功能:HTTP不安全的传输数据被中间人盗用,信息泄露,数据内容被劫持,HTTPS协议的实现被篡改,传输内容被加密,认证是对称加密:加密密钥和解密密钥是等价的,相同的非对称加密:HTTPS加密协议原理:中间人伪造客户端和服务器:(中间人可以伪装成客户端和服务器,中间人可以劫持数据,这是不安全的)HTTPS CA签名证书:(服务器和客户端可以通过实施约定的证书来识别

HTTPS原理和作用

为什么需要HTTPS

原因:HTTP不安全

  • 传输数据被中间人盗用、信息泄露
  • 数据内容劫持、篡改

HTTPS协议的实现

对传输内容进行加密以及身份验证

对称加密:加密秘钥和解密秘钥是对等的,一样的

nginx 之 https 证书配置第1张

非对称加密:

nginx 之 https 证书配置第2张

HTTPS加密协议原理:

 nginx 之 https 证书配置第3张

中间人伪造客户端和服务端:(中间人可以伪装成客户端和服务端,中间人可以对数据进行劫持,不安全

nginx 之 https 证书配置第4张

HTTPS的CA签名证书:(服务端和客户端通过实现约定好的证书进行认证,都会对证书进行校验,所以中间人没法劫持数据,故安全

 nginx 之 https 证书配置第5张

HTTPS 配置使用

证书签名生成CA证书

先确认环境:已经安装openssl和nginx已经编译ssl的模块

openssl version

nginx 之 https 证书配置第6张

nginx -V

nginx 之 https 证书配置第7张

rpm -qa | grep open

nginx 之 https 证书配置第8张

  

生成秘钥和CA证书步骤:

步骤1、生成key秘钥

步骤2、生成证书签名请求文件(csr文件)

步骤3、生成证书签名文件(CA文件)

证书签名生成和Nginx的HTTPS服务场景演示

 先创建一个用来放秘钥的文件夹 ssl_key

cd /etc/nginx/
mkdir ssl_key

nginx 之 https 证书配置第9张

输入加密算法

openssl genrsa -idea -out jesonc.key 1024

 nginx 之 https 证书配置第10张

 回车,会让输入密码,这里设置为123456,完成后会生成一个.key的文件

 nginx 之 https 证书配置第11张

生成证书签名请求文件(csr文件)

openssl req -new -key jesonc.key -out jesonc.csr

nginx 之 https 证书配置第12张

查看生成的请求文件

nginx 之 https 证书配置第13张

生成证书签名文件(CA文件) 打包 有效期设置了 10 年

openssl x509 -req -days 3650 -in jesonc.csr -signkey jesonc.key -out jesonc.crt

nginx 之 https 证书配置第14张

 Nginx的HTTPS语法配置

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

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;
   }
}

 

 配置好之后,关闭和启动,都需要数之前设置的密码

关闭

nginx -s stop -c /etc/nginx/nginx.conf

启动 

nginx -c /etc/nginx/nginx.conf

nginx 之 https 证书配置第15张

访问

https://www.zhangbiao.com/index.html

nginx 之 https 证书配置第16张

nginx 之 https 证书配置第17张

基于Nginx的HTTPS服务_实战场景配置苹果要求的openssl后台HTTPS服务

配置苹果要求的证书:  

  • 1、服务器所有的连接使用TLS1.2以上的版本(openssl 1.0.2)
  • 2、HTTPS证书必须使用SHA256以上哈希算法签名
  • 3、HTTPS证书必须使用RSA2048位或ECC256位以上公钥算法
  • 4、使用前向加密技术

首先看openssl版本:,为1.0.1,需要升级 

nginx 之 https 证书配置第18张

查看当前使用的自签算法类型:openssl x509 -noout -text -in ./jesonc.crt,使用的是sha256,位数是1024位,都不符合规定  

openssl x509 -noout -text -in ./jesonc.crt

  

nginx 之 https 证书配置第19张

升级openssl,使用shell脚本升级

update_openssl.sh

#!/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

执行脚本  

sh ./update_openssl.sh

版本升级成功,查看版本

openssl version

nginx 之 https 证书配置第20张

制作复合苹果的证书

修改算法

openssl req -days 36500 -x509 -sha256 -nodes -new^Cy rsa:2048 -keyout jesonc_apple.crt

nginx 之 https 证书配置第21张

修改配置文件  

test_https.conf  

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;
   }
}

检查配置语法,并重载

nginx -tc /etc/nginx/nginx.conf 
nginx -s reload -c /etc/nginx/nginx.conf

nginx 之 https 证书配置第22张 

查看443端口是否启动

netstat -luntp | grep 443

  

nginx 之 https 证书配置第23张

访问

https://www.zhangbiao.com/index.html

nginx 之 https 证书配置第24张

 成功返回地页面

 nginx 之 https 证书配置第25张

HTTPS 服务优化

方法一:

  激活keepalive 长连接

方法二:

  设置 session 缓存

 test_https.conf

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;
   }
}

  

  

免责声明:文章转载自《nginx 之 https 证书配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux基础知识-23C#调用C++的DLL错误解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ELK 6安装配置 nginx日志收集 kabana汉化

#ELK 6安装配置 nginx日志收集 kabana汉化 环境 centos 7.4 ,ELK 6 ,单节点 服务端 Logstash 收集,过滤 Elasticsearch 存储,索引日志 Kibana 可视化 客户端 filebeat 监控、转发,作为agent filebeat-->Logstash-->Elasticsearch--...

nginx代理tcp请求

1、概述 ngx_stream_core_module这个module在nginx1.90后开始支持。开启nginx的tcp代理支持--with-stream=dynamic --with-stream_ssl_module. 2、配置nginx load_module "/usr/lib64/nginx/modules/ngx_stream_modul...

GVM安装

GVM安装 1.下载二进制文件 https://gitee.com/voidint/gvm/releases 2.解压 将压缩包解压至PATH环境变量目录下,如/usr/local/bin。 3.配置环境变量 vim .bashrc export GOROOT="${HOME}/.g/go" export PATH="${HOME}/.g/go/bin...

CAS 5.X 安装

官方文档: https://apereo.github.io/cas/5.1.x/index.html 几个基本概念 CAS Server: SSO服务器端 CAS Client : SSO客户端,内置于各个子应用 ST: Service Ticket 用于登录验证 TGC:Ticket Granted Cookie 用于验证是否已经登录,保存在客户端Co...

docker学习

Docker 介绍 docker是什么 操作系统级别的虚拟化,基于linux内核的namespace和cgroup docker 与虚拟机对比 启动秒级,虚拟机是分钟级别 磁盘几M,虚拟机G级别 隔离程度相比虚拟机较低 应用场景 打包程序发布 部署微服务 测试 持续集成 应用程序隔离,环境的一致性,迁移方便   安装配置 官网 www.docker.com...

Docker --Dockerfile(制作镜像)

Dockerfile Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像 Dockerfile 常用指令 FROM 作用:指定基础镜像,Dockerfile中FROM是必备指令,且必须是第一条指令; 格式:FROM <image>:[tag] FROM busybox LABEL 作用:设...