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是 ...
随机推荐
- Java中的List接口特有的方法
import java.util.ArrayList; import java.util.List; /* List接口中特有方法: 添加 add(int index, E element) addA ...
- 用户价值模型 CITE :https://www.jianshu.com/p/34199b13ffbc
RFM用户价值模型的原理和应用 ▌定义 在众多的用户价值分析模型中,RFM模型是被广泛被应用的:RFM模型是衡量客户价值和客户创利能力的重要工具和手段,在RFM模式中,R(Recency)表示客户购 ...
- 使用xcode 8 调试ios10
这几天更新了ios10,发现真机不能调试,弹出几个错,表示没有证书.用ios9的真机能调试, 真他么坑,总结一下解决方法. 在BuildSetting 的Signing中Code Signing Id ...
- Unity3d 判断物体是否在可见范围内
unity中自带两个回调函数: void OnBecameVisible()//当物体可见时,回调一次. void OnBecameInvisible()//当物体不可见时,回调一次. 在untiy编 ...
- Ping 命令的执行过程和应用协议
1. ICMP是“Internet Control Message Ptotocol”的缩写.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息. 控制消息是指网络通不通.主机 ...
- 【动态规划】51nod1780 完美序列
巧妙的转化:f前两维大小开反TLE了一发…… 如果一个序列的相邻两项差的绝对值小于等于1,那么我们说这个序列是完美的. 给出一个有序数列A,求有多少种完美序列排序后和数列A相同. Input 第一行一 ...
- 201621123080 《Java程序设计》 第7周学习总结
1. 本周学习总结 1.1 思维导图:Java图形界面总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 事件 事件源 事件监听器 事件处理方法 1.2 任意 ...
- vue + axios---封装一个http请求
在使用vue开发时,官方推荐使用axios来请求接口 // axios官方地址 https://github.com/axios/axios 但是axios并不像 vue-resource 一样拥有i ...
- POJ:1753-Flip Game(二进制+bfs)
题目链接:http://poj.org/problem?id=1753 Flip Game Time Limit: 1000MS Memory Limit: 65536K Description Fl ...
- Linux学习-Shell的变量功能
什么是变量? 简单的说,就是让某一个特定字串代表不固定的内容. 变量的可变性与方便性 举例来说,我们每个帐号的邮件信箱默认是以 MAIL 这个变量来进行存取的, 当 dmtsai 这个 使用者登陆时, ...