nginx篇08-添加客户端证书认证

2023-05-16

本文主要介绍如何使用给nginx服务添加客户端证书认证从而实现双向加密。

对于一般的https网站来说,实际上https所使用的证书是属于单向验证,即客户端单向验证服务器的安全性,而服务器端是没有对客户端的身份进行验证的。关于https的原理,可以查看这篇文章:《SSL/TLS、对称加密和非对称加密和TLSv1.3》

如果自己部署了一些安全性较高的网站不希望被其他人随意访问,就可以尝试部署https的双向认证,对客户端也添加证书认证。本文将会使用openssl自签证书来完成最简单的一个https双向认证。

1、openssl自签证书

在开始之前我们新建一个目录专门用来存放这次生成证书相关的全部文件。openssl生成自签证书的命令非常简单,总结如下:

openssl genrsa -out root.key 1024

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

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

接下来我们开始逐个命令进行讲解,首先我们需要生成一个root.key文件

root.key文件生成之后,我们就可以根据key文件来生成一个记录证书信息的csr文件用于申请证书。csr文件需要记录相关的证书申请人的地址和邮件等信息,最后还可以设置一个密码,当需要使用这个csr文件来申请证书的适合就需要输入这个密码,否则无法使用,如果不想设置的话直接回车即可跳过

生成了keycsr文件之后,我们就可以自己生成一个crt的证书文件,由于这里是测试,我们可以直接把时间设定为10年

到这一步,我们已经生成了一个完整的自签CA证书,其中包含了私钥key文件,证书信息csr文件和公钥crt文件。

2、生成p12证书

为了方便使用,我们需要把证书打包成p12格式的证书文件,然后在客户端的电脑上导入。同样的在生成p12文件的时候我们最好添加一个密码保护,这样就算证书泄露了也不会导致安全问题。

openssl pkcs12 -export -clcerts -in root.crt -inkey root.key -out root.p12

3、配置nginx

最后我们只需要在nginx中需要使用双向认证的部分添加以下配置然后重启即可生效

# 客户端公钥证书
ssl_client_certificate /path/to/root.crt;
# 开启客户端证书验证
ssl_verify_client on;

最后我们在windows或者mac上面导入p12文件之后,打开对应的网站就会有相应的提示了:

如果不进行证书验证,则服务器会返回400错误。

我们还可以使用curl来进行测试,如果不带上证书,会直接报400错误。

# curl https://ip.tinychen.com
<html>
<head><title>400 No required SSL certificate was sent</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>No required SSL certificate was sent</center>
<hr><center>nginx</center>
</body>
</html>

带上证书之后则访问正常

[root@tiny-cloud /home/certs]# curl --cert ./root.crt --key ./root.key https://ip.tinychen.com
hello world

如果想要查看curl的详细过程,我们可以加上-v参数来查看。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx篇08-添加客户端证书认证 的相关文章

随机推荐

  • K8S 快速入门(五)网络通信原理:Pod网络

    一 Pod网络 1 Pod结构 Pod的特点 xff1a 容器 1 有自己的IP地址 2 有自己的hostname 3 有自己的端口 Pod实际上可以理解为就是k8s云平台中的虚拟机 xff0c 而这个pod内部封装的是由docker引擎所
  • 代码优化之策略模式

    前言 xff1a 最近刚完成一个专项的代码codeing xff0c 今天花了一下午把代码优化了下 xff0c 总结了一些优化时用到的思想和方法 xff0c 后续也会继续补充好的代码习惯和最佳范式 策略模式 自我介绍 策略这个词应该怎么理解
  • python保存图片变色,与原始图像颜色不一致

    有时候将图片保存到本地会发现颜色与原来不一致 xff0c 有的变成相反的颜色了 针对这个问题 xff0c 我试了好多方法 xff0c 原理不大清楚 但多换一种保存方式就OK了 常用的有三种 xff1a 1 PIL span class to
  • 树莓派(Raspberry) WIFI 配置 (无显示器)

    目标 在没有显示器的情况下 xff0c 通过一根网线配置树莓派WIFI 然后开机自动连接WIFI xff0c 以后就可以直接通过主机通过VNC Viewer Putty也可以 控制树莓派 当然 xff0c 如果有网线也可以控制了 xff0c
  • 网站搭建教程(详细步骤 )

    目录 网站组成 一 服务器 二 网站程序 三 域名 四 空间基本介绍 搭建网站的基本步骤流程 教程解说 一 购买域名 二 购买服务器 三 相关配置 网站组成 一 服务器 什么是服务器 我们可以理解为一个容器 用来存放网站的内容部分 我们在互
  • c++11的regex使用

    首先不论在window下还是linux下 xff0c 你要通过c c 43 43 使用正则表达式 xff0c 你就必须包含所需的头文件regex 里面包含了所需的函数 xff0c 一般的第一步需要确定要匹配的模式pattern 使用rege
  • Qt信号与槽的五种连接方式

    qt信号与槽的五种连接方式 xff1a 1 默认连接 xff1a 如果是在同一线程等价于直连 xff0c 在不同线程等价于队列连接 2 直连 xff1a 信号在哪 xff0c 在哪个线程执行 xff08 最好只在同一线程中用 xff09 3
  • Android (Android studio3.0.1)一篇可以实现app多语言的转换(简单操作)的教程

    最近接触到了项目需要 xff0c 多语言的转换 网上有很多资料 xff0c 我整理一些 xff0c 简单适合自己使用的操作 第一步 打开Android studio 添加 Android Studio插件 AndroidLocalizati
  • Centos7部署java环境

    先更新 yum y update amp amp yum y upgrade 1 xff0c Wget 参考 xff1a https blog csdn net xieshen86 article details 125472698 htt
  • Ubuntu16.04安装deb包

    deb包是Debian xff0c Ubuntu等Linux发行版的软件安装包 xff0c 扩展名为 deb xff0c 是类似于rpm的软件包 xff0c Debian xff0c Ubuntu系统不推荐使用deb软件包 xff0c 因为
  • HCIE-RS面试--STP弊端

    1 收敛速度慢 监听状态15s是为了避免STP协议在收敛过程中产生临时环路 xff0c 让BPDU有足够的时间在整个网络进行传递 监听状态期间 xff0c MAC地址表受TC BPDU的影响会进行提前老化 xff0c 清除错误的MAC地址信
  • mapreduce 班级学生成绩统计

    这个是最近的一个实验 xff0c 其中这个实验老师的要求是 1 统计每个班成绩的最大值 最小值 并且输出姓名 如果有多个那么要都要输出 xff0c 然后输出每个班的平均值 再者就是每个班的成绩分布 xff0c 优秀良好 xff0c 及格不及
  • 解决修改css或js文件后,浏览器缓存未更新问题

    问题描述 xff1a 最近在上线新版本项目的时候 xff0c 发现有的用户的操作还是调用的老版本JS里面的内容 xff0c 这样就造成原来新的JS里面加上的限制不能限制用户的操作 xff0c 从而导致用户可以重复操作 问题产生原因 xff1
  • 最全UnityHub国际版下载链接Unity2022~2017各版本+Unity5.x【间歇性更新】

    Unity2022 2017各版本UnityHub国际版下载链接 间歇性更新 直链下载国际版UnityHub国际版下载链接Unity2022 xUnity2021 xUnity2020 xUnity2019 xUnity2018 xUnit
  • FreeRTOS教程——任务(一)

    文章目录 FreeRTOS教程 任务 xff08 一 xff09 概述任务状态任务优先级执行任务 单元xTaskCreatevTaskDeletevTaskDelayvTaskSuspendvTaskResume 综合实例 FreeRTOS
  • Maven的下载安装配置教程(详细图文)

    目录 一 简单了解一下什么是Maven 二 maven的下载 三 maven的安装 四 maven的环境变量配置 五 setting文件配置 六 开发工具配置Maven 一 简单了解一下什么是Maven Maven就是一款帮助程序员构建项目
  • ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程

    环境 xff1a OS X 10 10 5 43 JDK 1 8 步骤 xff1a 一 下载ELK的三大组件 E lasticsearch下载地址 xff1a https www elastic co downloads elasticse
  • 实时更新的Sci-Hub可用网址

    近期 xff0c Sci Hub似乎用起来又不流畅了 xff0c 有时候打开贼费劲 xff0c 而且有些网址又用不了 xff01 接下来给大家推荐一个网站 xff0c 他们会实时新Sci Hub网址 xff0c 大家可以去试试 xff01
  • RFC8314文档中对465端口和587端口的阐述

    最近在学习SMTP的时候发现SMTP在使用加密传输的时候涉及到465和587两个端口 xff0c 网上对两者之间的区别众说纷纭 xff0c 后来查到了RFC官方文档中对于这个争论较久的问题的定义和详细说明 xff0c 这里做转载和翻译用于记
  • nginx篇08-添加客户端证书认证

    本文主要介绍如何使用给nginx服务添加客户端证书认证从而实现双向加密 对于一般的https网站来说 xff0c 实际上https所使用的证书是属于单向验证 xff0c 即客户端单向验证服务器的安全性 xff0c 而服务器端是没有对客户端的