nginx 根证书 服务器证书,Nginx双向证书校验(服务器验证客户端证书)
1、创建Root CA私钥
openssl genrsa -out root-ca.key 1024
2、创建Root CA证书请求
openssl req -new -out root-ca.csr -key root-ca.key
3、签发Root CA根证书
openssl x509 -req -in root-ca.csr -out root-ca.crt -signkey root-ca.key -CAcreateserial -days 3650
5、生成服务器私钥
openssl genrsa -out server.key 2048
6、生成服务器证书签名请求
openssl req -new -out server.csr -key server.key
Common Name注意使用服务器的域名
7、使用Root CA签发服务器证书(Root CA证书、Root CA私钥、服务器CSR)
openssl x509 -req -in server.csr -out server.crt -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -days 3650
8、生成客户端私钥
openssl genrsa -out client.key 2048
9、生成客户端证书签名请求
openssl req -new -out client.csr -key client.key
10、签发客户端证书(Root CA证书、Root CA私钥、服务器CSRc)
openssl x509 -req -in client.csr -out client.crt -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -days 3650
11、客户端证书转为p12格式(p12格式才能导入浏览器)
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
全过程:
Nginx验证客户端证书(使用OpenSSL生成自签名证书)
然后配置Nginx:
server
{
listen 11111;
server_name *.*.com;
ssl on;
ssl_certificate /root/ssl-cert/server.crt;
ssl_certificate_key /root/ssl-cert/server.key;
ssl_verify_client on;
ssl_client_certificate /root/ssl-cert/root-ca.crt;
location / {
client_max_body_size 10M;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_ssl_verify off;
proxy_pass http://172.*.*.*:8080/;
proxy_redirect default;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server
{
listen11111;
server_name *.*.com;
sslon;
ssl_certificate/root/ssl-cert/server.crt;
ssl_certificate_key/root/ssl-cert/server.key;
ssl_verify_clienton;
ssl_client_certificate/root/ssl-cert/root-ca.crt;
location/{
client_max_body_size10M;
proxy_set_headerX-Forwarded-Host$host;
proxy_set_headerX-Forwarded-Server$host;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerX-Real-IP$remote_addr;
proxy_ssl_verifyoff;
proxy_passhttp://172.*.*.*:8080/;
proxy_redirectdefault;
}
}
此时若不设置客户端证书访问会报错“No required SSL certificate was sent”,我们可以先使用curl进行验证(–insecure标识忽略服务器端证书校验,否则自签名证书会报错):
curl使用客户端证书
如果是通过Chrome访问则是:
No required SSL certificate was sent
此时我们在Chrome中导入客户端证书,设置-高级-管理证书:
Chrome导入客户端证书0
然后将其导入“个人”:
Chrome导入客户端证书1
并在“高级”中勾选“客户端身份验证”的用途:
Chrome导入客户端证书2
然后重启Chrome,再次访问时将被提示选择证书:
Chrome选择客户端证书
nginx 根证书 服务器证书,Nginx双向证书校验(服务器验证客户端证书)相关推荐
- java ocsp校验_Nginx使用OCSP验证客户端证书
此前,Nginx只支持OSCP验证服务器证书. 目前,Nginx 1.19.0+已经支持使用OSCP验证客户端证书:https://trac.nginx.org/nginx/ticket/1534 有 ...
- java https 验证客户端证书_Java HTTPS客户端证书认证
小编典典 终于设法解决了所有问题,所以我会回答我自己的问题.这些是我用来解决特定问题的设置/文件: 该客户端的密钥库是一个PKCS#12格式文件包含 客户端的公共证书(在这种情况下,由自签名CA签名) ...
- 本地ca,以及根证书的生成,服务器证书生成,nginx https配置等
环境: centos7.6 参考: https://blog.51cto.com/liuzhengwei521/2120535?utm_source=oschina-app 工具: 和openssl是 ...
- nginx双向认证配置及验证-脚本实现制作证书过程及浏览器验证遇到的一些问题解决
目录 证书制作 nginx配置 curl命令验证客户端证书 主要几个浏览器添加客户端p12证书的方式 firefox浏览器添加p12证书方式 Chrome浏览器导入客户端p12证书方式 safari浏 ...
- nginx配置反向代理验证ssl证书 双向认证
适用于公司内部一些业务系统对安全性要求比较高,业务系统只允许公司内部人员访问,而且要求浏览器要安装证书登录,对公司入职有需求的人员开通证书,流失的人员注销证书. 修改openssl配置参数 vim / ...
- 什么是SSL双向认证,与单向认证证书有什么区别?
SSL/TLS 证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是 ...
- RFC8705-OAuth 2.0双向TLS客户端身份验证和证书绑定访问令牌
RFC8705-OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens 目录 摘要 1. 简介(I ...
- openssl私有CA证书签发与单双向认证
什么是CA? CA是数字认证中心的简称.指的是发放.管理.废除数字证书的机构. CA的作用: 检查证书持有者身份的合法性.签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理. 建 ...
- 如何解决实际错误:配置IIS使其支持SSL加密的HTTPS,并且要求浏览器客户端证书
原文:http://www.cnblogs.com/dosboy/archive/2013/02/18/2915269.html 在配置IIS的HTTPS和IE客户端的证书时,我们经常出错,本文就是通 ...
最新文章
- 文件描述符fd是什么?
- [云炬创业基础笔记]第七张创业团队测试2
- 体验 Orbeon form PE 版本提供的 JavaScript Embedding API
- leetcode213. 打家劫舍 II
- 《c语言深度剖析》读书笔记
- Jsoup获取所有链接
- 迄今为止我所见过的将BP算法最好的PPT
- JavaWeb之分页代码
- Mysql:实战2000W条数据实现全文检索
- 手机微信如何打开html文件,手机上怎么找微信里的电子文件
- RT-Thread Studio配置连接WIFI模块
- 提高计算机软件速度的方法,提高电脑速度的10个有效方法
- 如何查看域名所对应的证书有效期?
- nodejs优雅的使用es6语法
- 夏天水果店怎么打理,如何打理好一个水果店
- 关于win10笔记本电脑设置账号密码,但是关闭盖子打开后不进入输入密码界面的解决方法
- 在线HTML文本提取URL链接工具
- 华为路由器DCHP服务配置实验
- SF30 | 双均线交易模型的震荡过滤
- Python 实现图片隐写术
热门文章
- android 获取webView高度,设置webView高度
- docker 报错 Container is not running
- .Net DES加密解密(不带向量)
- java错误switch找不到符号,Java使用StringBuilder时--找不到符号
- 动态规划之力扣股票类问题
- Android自定义RadioButton
- link引入html5,CSS引入方式 | link和@import的区别 — 生僻的前端考点
- 英语----专业单词
- [Swift]LeetCode482. 密钥格式化 | License Key Formatting
- 基于51的串行通讯原理及协议详解(uart)