首页 > 系统相关 >nginx 之 https 证书配置

nginx 之 https 证书配置

时间:2023-09-19 19:55:39浏览次数:47  
标签:https ssl 证书 openssl nginx key jesonc

HTTPS原理和作用

为什么需要HTTPS

原因:HTTP不安全

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

HTTPS协议的实现

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

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

非对称加密:

 HTTPS加密协议原理:

 

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

 

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

 

HTTPS 配置使用

证书签名生成CA证书

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

openssl version

nginx -V

rpm -qa | grep open

生成秘钥和CA证书步骤:

步骤1、生成key秘钥

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

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

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

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

cd /etc/nginx/
mkdir ssl_key

输入加密算法

openssl genrsa -idea -out jesonc.key 1024

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

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

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

 查看生成的请求文件

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

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

 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.xxxx.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

 访问

https://www.xxxx.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位,都不符合规定

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

升级openssl,使用shell脚本升级

update_openssl.sh

 

#!/bin/sh
#[email protected]
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

制作复合苹果的证书

修改算法

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

修改配置文件  

test_https.conf

server
 {
   listen       443;
   server_name  192.168.1.112 www.xxxx.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

 查看443端口是否启动

netstat -luntp | grep 443

 访问

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

 成功返回地页面

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

原文地址:https://www.cnblogs.com/crazymagic/p/11042333.html

 

标签:https,ssl,证书,openssl,nginx,key,jesonc
From: https://www.cnblogs.com/abel-he/p/17715644.html

相关文章

  • 基本环境安装 jdk,mq,redis,nginx
    JDK:解压安装包,命令为tar-zxvfjdk-8u381-linux-x64.tar.gz配置环境变量,使用vim命令(需要安装vim,安装命令为:yuminstallvim)修改/etc/profile文件,在文件末尾加入如下配置 JAVA_HOME=/usr/local/jdk8/jdk1.8.0_381 PATH=$JAVA_HOME/bin:$PATH重新加载profile文件,使更改的配置......
  • 使用内网nginx代理rancher
    需求:rancher部署在192.168.188.167服务器上控制台访问地址https://192.168.188.167:8443在本地只有192.168.80.111有权限访问,需要在80.111上配置一个nginx代理,使本地其他机器也能访问到使用此配置,发现无法登录rancher了upstreamrancher{server192.......
  • nginx配置多个web项目
    location/{roothtml;indexindex.htmlindex.htm;try_files$uri$uri//index.html;}location/mobile{#多层目录时不能用root,要用aliasaliashtml/mobile;indexindex.html......
  • Linux 安装Nginx
    1.安装epelsudoyuminstallepel-release2.安装nginxyuminstall-ynginx3.导航至nginx配置文件目录cd/etc/nginx/4.修改nginx配置文件vinginx.conf#Formoreinformationonconfiguration,see:#*OfficialEnglishDocumentation:http://nginx.org/en/docs/......
  • Cert-Manager 实现基于阿里云的自动证书签发
    简介Cert-Manager[1]是一款用于Kubernetes集群中自动化管理TLS证书的开源工具,它使用了Kubernetes的自定义资源定义(CRD)机制,让证书的创建、更新和删除变得非常容易。设计理念Cert-Manager是将TLS证书视为一种资源,就像Pod、Service和Deployment一样,可以使用Kuberne......
  • 2.HTTP、HTTPS
    (1)HTTP协议介绍HTTP协议,全称超文本传输协议(HypertextTransferProtocol)。顾名思义,HTTP协议就是用来规范超文本的传输,超文本,也就是网络上的包括文本在内的各式各样的消息,具体来说,主要是来规范浏览器和服务器端的行为的。并且,HTTP是一个无状态(stateless)协议,也就是说服务器......
  • SpringBoot 后端配置 Https 教程
    以阿里云为例子1.申请SSL证书1.注册域名打开阿里云官网,搜索域名点击域名注册,输入域名,点击搜索选择心仪的域名,点击购买,打钱进入域名控制台,进行实名认证2.申请SSL证书打开阿里云官网,搜索SSL证书点击免费证书,领取20张券(一年可以领20张,可以创建20张免......
  • 记一次nginx.ingress.kubernetes.io/configuration-snippet报错
    记一次nginx.ingress.kubernetes.io/configuration-snippet报错在迁移xxl-job到k8s集群中,报错one or more objects failed to apply, reason: admission webhook "validate.nginx.ingress.kubernetes.io" denied the request: nginx.ingress.kubernetes.io/configu......
  • 你的路灯CE证书LVD证书EMC证书ROHS证书ERP报告
    路灯CE证书路灯FCC证书路灯ROHS证书路灯REACH证书路灯CB证书路灯SAA证书路灯TUV证书路灯RCM证书路灯LVD证书路灯EMC证书路灯LM79那个路灯ERP能效报告路灯IK报告路灯IP68报告路灯IES报告路灯光衰报告路灯寿命测试报告路灯COC证书路灯IEC60598报告路灯GB7000.1报......
  • nginx-缓存
    缓存内容并定义缓存的存储位置。proxy_cache_path/var/nginx/cache               keys_zone=CACHE:60m               levels=1:2                        ......