L96

双向认证SSL指令示列

对下游使用证书指令

Syntax: ssl_certificate file;
Default:
Context: httpserver
Syntax: ssl_certificate_key file;
Default:
Context: httpserver

代码示列 首先需要将 ngx_http_ssl_module编译进nginx 一般证书可以动态生成 详见 SSL证书生成方式

listen  ssl; # managed by Certbot
 ssl_certificate /etc/letsencrypt/live/shoppas.com.cn/fullchain.pem; # managed by Certbot
 ssl_certificate_key /etc/letsencrypt/live/shoppas.com.cn/privkey.pem; # managed by Certbot
 include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

如何验证下游证书

Syntax: ssl_client_certificate file;
Default:
Context: httpserver
Syntax: ssl_verify_client on | off | optional | optional_no_ca;
Default:
ssl_verify_client off;
Context: httpserver

如何对上游使用证书 如果需要链接上游 可以在location设置独立的证书

Syntax: proxy_ssl_certificate file;
Default:
Context: httpserverlocation
Syntax: proxy_ssl_certificate_key file;
Default:
Context: httpserverlocation

如何验证上游的证书

Syntax: proxy_ssl_trusted_certificate file;
Default:
Context: httpserverlocation
Syntax: proxy_ssl_verify on|off;
Default:
proxy_ssl_verify off;
Context: httpserverlocation

SSL模块提供的变量

  • ssl_cipher : 本次通讯选用的安全套件
  • ssl_ciphers : 客户端支持的所有安全套件
  • ssl_protocal : 本次通讯选用的 TLS 版本
  • ssl_curves:客户端支持的椭圆曲线

证书

  •   ssl_client_raw_cert: 原始客户端证书内容
  •   ssl_client_escaped_cert:返回客户端证书做urlencode编码后的内容
  •   ssl_client_cert:对客户端证书每一行内容前加tab制表符空白,增强可读性
  •   ssl_client_fingerprint:客户端证书的SHA1指纹

证书结构化信息

  •   ssl_server_name 通过TLS插件SNI获取到服务域名
  •   ssl_client_i_dn 依据RFC2253获取到证书issuer nd信息 如: CN=...,O=...,L=...,C=..,
  •   ssl_client_i_dn_legacy 依据RFC2253获取到证书issuer nd信息 如: /CN=.../O=.../L=.../C=...
  •   ssl_client_s_dn  依据RFC2253获取到证书subject dn信息
  •   ssl_client_s_dn_legacy   依据RFC2253获取到证书subject dn信息 格式不一样而已

证书有效期

  •   ssl_client_v_end 返回客户端正式的过期时间
  •   ssl_client_v_ramain 返回还有多少天客户端证书过期
  •   ssl_client_v_start 客户端证书颁发时间

链接有效性

  ssl_client_serial 返回连接上客户端证书的序列号

  ssl_early_data 在TLS1.3协议中使用early data且握手未完成返回1 否则返回空字符串

  ssl_client_verify 如果验证失败为FAILED原因 如果没有验证证书则为NONE 验证成功为SUCCESS

  ssl_session_id 已经建立连接的sessionId

  ssl_session_reused 如果session被复用 则为r 否则为.

创建证书示列

创建根证书

  创建CA私钥命令 : openssl genrsa -out ca.key 2048

  创建CA公钥 :openssl req -new -x509 -days 3650 -key ca.key -out ca.crt  //后面可能让输入很多选项 比如国家 城市 等

签发证书

  创建私钥

  openssl genrsa -out a.pem 1024 //创建证书a

  openssl rsa -in a.pem -out a.key //创建a证书的公钥

  生成签发请求

  openssl req -new -key a.pem -out a.csr //针对a证书做签发

  使用CA证书进行签发

  openssl x509 -req -sha256 -in a.csr -CA ca.crt -CAKey ca.key -CAcreateserial -days 3650 -out a.crt //使用ca证书来签发a证书

  验证签发证书是否正确

  openssl verify -CAfile ca.crt a.crt

Nginx 对上游使用SSL链接的更多相关文章

  1. Ubuntu Nginx下配置网站ssl实现https访问

    最近在看  HTTP权威指南   看到介绍了HTTPS的ssl,自己就动手测试了下,将步骤记录下 HTTPS简介 什么是HTTPS?百科是这样解释的.HTTPS(全称:Hyper Text Trans ...

  2. Nginx集群之SSL证书的WebApi微服务

    目录 1       大概思路... 1 2       Nginx集群之SSL证书的WebApi微服务... 1 3       HTTP与HTTPS(SSL协议)... 1 4       Ope ...

  3. Nginx集群之SSL证书的WebApi身份验证

    目录 1       大概思路... 1 2       Nginx集群之SSL证书的WebApi身份验证... 1 3       AuthorizeAttribute类... 2 4       ...

  4. Nginx集群之SSL证书的WebApi令牌验证

    目录 1       大概思路... 1 2       Nginx集群之SSL证书的WebApi令牌验证... 1 3       Openssl生成SSL证书... 2 4       编写.NE ...

  5. Linux下Nginx配置阿里云 SSL证书实现HTTPS访问

    这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...

  6. nginx:[emerg]unknown directive "ssl"

    nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:102 到解压的nginx目录 ...

  7. Nginx 接受上游缓存流程

    L:101 这个指令主要是由上游服务器来决定是否缓存 详见博客Nginx 针对上游服务器缓存

  8. Nginx 当上游服务器返回失败时的处理办法

    陶辉95课 Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503  ...

  9. Linux 搭建Nginx并添加配置 SSL 证书

    1. 安装准备   1.1 gcc安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: [root@nginx ~]# yum -y i ...

随机推荐

  1. 探讨.NET Core数据进行3DES加密和解密问题

    前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用 ...

  2. 【Java并发.6】结构化并发应用程序

    6.1 在线程中执行任务 应用程序提供商希望程序支持尽可能多的用户,从而降低每个用户的服务成本,而用户则希望获得尽可能快的响应.大多数服务器应用程序都提供了一种自然的任务边界选择方式:以独立的客户请求 ...

  3. .net core CKEditor 图片上传

    最近在玩 asp.net core,不想用UEditor,想使用CKEditor.故需要图片上传功能. 废话不多说,先上效果图: CKEditor 前端代码: <text id="co ...

  4. LeetCode 961. N-Repeated Element in Size 2N Array

    In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeate ...

  5. 使用git将项目上传到github

    使用git将项目上传到github(最简单方法)   首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具,这里给出下 ...

  6. uva11300 分金币(中位数)

    来源:https://vjudge.net/problem/UVA-11300 题意: 有n个人围成一圈,每个人有一定数量的金币,每次只能挪动一个位置,求挪动的最少金币使他们平分金币 题解: 蓝书p6 ...

  7. Python_函数的有用信息、带参数的装饰器、多个装饰器装饰一个函数

    函数的有用信息 代码1: def login(username, password): """ 此函数需要用户名,密码两个参数,完成的是登录的功能. :return: T ...

  8. Linux 典型应用之服务管理

    crontab 定时任务 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minut ...

  9. KubeCon CloudNativeCon China 2019

    KubeCon CloudNativeCon China 2019 - LF Asia, LLChttps://events.linuxfoundation.cn/events/kubecon-clo ...

  10. 搞站思路 <陆续完善中>

    只提供思路经验分享.不提供日站方法....一般站点那里最容易出现问题 入手思路: 主站一般都很安全.一般从二级域名下手 多看看那些大站新出来的测试分站点 猜路径别忘了google 考虑看站点下的rob ...