Nginx配置https双向认证
1. 前期的准备工作:
安装openssl和nginx的https模块
cd ~/
mkdir ssl
cd ssl
mkdir demoCA
cd demoCA
mkdir newcerts
mkdir private
touch index.txt
echo '' > serial
2. 制作CA证书(这个是信任的起点,根证书,所有其他的证书都要经过CA的私钥签名)。
生成 CA私钥: ca.key
命令:openssl genrsa -des3 -out ca.key
这样是生成rsa私钥,`des3`算法,openssl格式,2048位强度。`ca.key`是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。
另外可以通过以下方法生成没有密码的key:
openssl rsa -in ca.key -out ca_decrypted.key
生成 CA根证书的公钥 ca.crt:
openssl req -new -x509 -days -key ca.key -out ca.crt
3. 制作网站的https证书,并用CA签名认证。
假设我们需要为 test.com 域名制作证书,先生成 test.com的证书私钥 test.com.pem。
命令:
openssl genrsa -des3 -out test.com.pem
生成无密码的私钥:
openssl rsa -in test.com.pem -out test.com.key
生成 csr 签名请求:
openssl req -new -key test.com.pem -out test.com.csr
这里需要输入国家,地区,组织,email等。最重要的是**common name**,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名一样,即,这里要写test.com,否则会引发浏览器警报,这里可以用 *.test.com 来做泛域名证书。
最后要用CA证书进行签名:
openssl ca -policy policy_anything -days -cert ./demoCA/ca.crt -keyfile ./demoCA/ca.key -in test.com.csr -out test.com.crt
把 ca.crt 的内容追加到 test.com.crt后面,因为有些浏览似乎不支持:
cat demoCA/ca.crt>> test.com.crt
4. 制作客户端证书(跟制作网站的证书模式一样):
准备客户端私钥:
openssl genrsa -des3 -out clent.pem
生成客户端证书请求:
openssl req -new -key client.pem -out client-req.csr
CA签名客户端证书请求
openssl ca -policy policy_anything -days -cert ca.crt -keyfile ca.key -in client-req.csr -out client.crt
客户端证书CRT转换为 PKCS #12格式(全称应该叫做 Personal Information Exchange,通常以 p12作为后缀):
openssl pkcs12 -export -clcerts -in client.crt -inkey client.pem -out client.p12
点击刚才生成的p12文件输入证书的密码将安装。
5. nginx配置
server {
listen ;
server_name test.com www.test.com; root html;
index index.html index.htm; ssl on; #开启ssl
ssl_certificate /PATH/TO/test.com.crt; #服务器证书位置
ssl_certificate_key /PATH/TO/test.com.key; #服务器私钥
ssl_client_certificate /home/zhangyong/key/ca.crt; #CA证书用于验证客户端证书的合法性 ssl_verify_client on; #开启对客户端的验证 ssl_session_timeout 5m; #session有效期,5分钟 ssl_protocols TLSv1 TLSv1. TLSv1.;
ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL'; #加密算法
ssl_prefer_server_ciphers on; location / {
try_files $uri $uri/ =;
}
}
6. 测试
当将一切都设置好,将 nginx启动成功后,就可以打开 IE来访问了,第一次访问,浏览器会询问双向认证时使用的证书,类似下图
注意:服务器和客户端的在输入common server时,不要重名
Nginx配置https双向认证的更多相关文章
- nginx配置https双向验证(ca机构证书+自签证书)
nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...
- Tomcat 配置 HTTPS双向认证
Tomcat 配置 HTTPS 双向认证指引说明: � 本文档仅提供 Linux 操作系统下的指引 � 在阅读本指引前请您在 Linux 部署 JDK 和 Tomcatserver为了 Tomcat ...
- NGINX 配置 SSL 双向认证
对于 NGINX 的 HTTPS 配置,通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可 ...
- 利用tomcatserver配置https双向认证
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/luo201227/article/details/36897387 首先请保证已经安装好jdk,而且 ...
- Nginx、SSL双向认证、PHP、SOAP、Webservice、https
本文是1:1模式,N:1模式请参见新的一篇博客<SSL双向认证(高清版)> ----------------------------------------------------- 我是 ...
- Https双向认证Android客户端配置
Https .cer证书转换为BKS证书 公式https://blog.csdn.net/zww986736788/article/details/81708967 keytool -importce ...
- nginx支持ssl双向认证配置
nginx支持ssl双向认证配置 listen 443; server_name test.com; ssl on; ssl_certificate server.crt; //server端公钥 s ...
- Keytool配置 Tomcat的HTTPS双向认证
Keytool配置 Tomcat的HTTPS双向认证 证书生成 keytool 简介 Keytool是一个Java数据证书的管理工具, Keytool将密钥(key)和证书(certificates) ...
- HTTPS 双向认证构建移动设备安全体系
HTTPS 双向认证构建移动设备安全体系 对于一些高安全性要求的企业内项目,我们有时希望能够对客户端进行验证.这个时候我们可以使用Https的双向认证机制来实现这个功能. 单向认证:保证server是 ...
随机推荐
- 11.使用while和for循环分别打印字符串s=’asdfer’中每个元素
1).for循环 s = 'asdfer' for i in s: print(i) 2).while循环 s = 'asdfer' while 1: print(s[index]) index += ...
- cocos2d-x中的字符串操作
1:循环体中字符串的构造. 通常用于多个有规律的文件的名字,诸如:[NSString stringWithFormat:@"filed.png",i].我们可以通过spr ...
- QQ 发送邮件
之前也发布过一篇QQ发邮件的,后来那种方法在阿里云服务器中报错了,查了好久才发现,是阿里云的服务器把 25 端口 给封杀了.现在重新做了个功能. public static string UserNa ...
- Factorialize a Number-freecodecamp算法题目
Factorialize a Number(计算一个整数的阶乘) 要求 给定一个整数,求其阶乘(用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积) 思路 确定乘的次数 用for循环进行累 ...
- 20181206(re,正则表达式,哈希)
1.re&正则表达式 2.hashlib 一:re模块&正则表达式 正则:正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描 ...
- AOP面向切面编程笔记
1.AOP概念:Aspect Oriented Programming 面向切面编程 2.作用:本质上来说是一种简化代码的方式 继承机制 封装方法 动态代理 …… 3.情景举例 ①数学计算器接口[Ma ...
- Tourists Gym - 101002I LCA——dfs+RMQ在线算法
LCA(Least Common Ancestors),即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先). 知识需求:1)RMQ的S ...
- golang(go语言)调试和查看gc信息,以及gc信息解析
这里记录一下调试golang gc的方法 启用gc打印: # GODEBUG=gctrace=1 go run ./main.go 程序启动后gc将打印如下信息: gc 65 @16.996s 0%: ...
- Linux学习-服务器硬件数据的收集
以系统内建 dmidecode 解析硬件配备 系统有个名为 dmidecode 的软件,它可以解析 CPU 型号.主板型号与内存相 关的型号等等~ [root@study ~]# dmidecode ...
- django_orm操作
查询操作和性能优化 1.基本操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 增 models.Tb1.object ...