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是 ...
随机推荐
- Golang glog使用详解
golang/glog 是 C++ 版本 google/glog 的 Go 版本实现,基本实现了原生 glog 的日志格式.在 Kuberntes 中,glog 是默认日志库. glog 的使用与特性 ...
- 利用Vue.js实现登录/登出以及JWT认证
JSON Web Token 入门教程:http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html 后端代码地址:https ...
- vue 报错unknown custom element解决方法
原因: 没有引入相关组件导致的 解决办法: 如果组件是按需引入的必须引入你当前用到的组件,否则会报错
- 类库日期和jsp导包
一.日期类库 1.1. Date Date类创建一个时间,或者是创建一个与你计算机当前的时间:精确到毫秒. //实例化时间类 Date date = new Date(); 1.2.格式转换类 1.2 ...
- MySQL索引类型及优化
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- NSString 使用 copy、strong
// 首先定义2个属性 @property (nonatomic, strong) NSString *stStr; @property (nonatomic, copy) NSString *coS ...
- NOIP模拟赛 某种数列问题
众所周知,chenzeyu97有无数的妹子(阿掉!>_<),而且他还有很多恶趣味的问题,继上次纠结于一排妹子的排法以后,今天他有非(chi)常(bao)认(cheng)真(zhe)去研究一 ...
- Jenkins注意点
这里要填写 在 Linux 上 生成的 git 私钥 并且带上 前后 注释 ------start ----- ---end -------
- 【Ubuntu】ubuntu基本操作命令
本文主要是用于记录ubuntu中会使用到的命令,但是有不是特别常用的,用于自己后续查阅使用. 1.查询ubuntu版本信息 方法一: cat /etc/issue 方法二: sudo lsb_rele ...
- Wannafly挑战赛21 机器人
从前在月球上有一个机器人.月球可以看作一个 n*m 的网格图,每个格子有三种可能:空地,障碍,机器人(有且仅有一个),现在地面指挥中心想让机器人在月球上行走,每次可以发送一个指令,为 U-往上走.D- ...