Nginx配置https双向认证

原创 2015年11月20日 17:36:43

1.      前期的准备工作:

安装openssl和nginx的https模块

cd  ~/
mkdir ssl
cd ssl
mkdir demoCA
cd demoCA
mkdir newcerts
mkdir private
touch index.txt
echo '01' > serial


2.      制作CA证书(这个是信任的起点,根证书,所有其他的证书都要经过CA的私钥签名)。

生成 CA私钥: ca.key

命令:openssl genrsa -des3 -out ca.key 2048

这样是生成rsa私钥,`des3`算法,openssl格式,2048位强度。`ca.key`是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。

另外可以通过以下方法生成没有密码的key:

openssl rsa -in ca.key -out ca_decrypted.key

生成 CA根证书的公钥 ca.crt

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

3.      制作网站的https证书,并用CA签名认证。

假设我们需要为 test.com 域名制作证书,先生成 test.com的证书私钥 test.com.pem。

   命令:

openssl genrsa -des3 -out test.com.pem 1024

   生成无密码的私钥:

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 1460 -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 2048

生成客户端证书请求:

openssl req -new -key client.pem -out client-req.csr

CA签名客户端证书请求

openssl ca -policy policy_anything -days 1460 -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 443;
  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.1 TLSv1.2;
  ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';       #加密算法
  ssl_prefer_server_ciphers on;
 
  location / {
    try_files $uri $uri/ =404;
  }      
}


6.      测试

当将一切都设置好,将 nginx启动成功后,就可以打开 IE来访问了,第一次访问,浏览器会询问双向认证时使用的证书,类似下图

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

自签SSL证书实现Nginx配置https双向认证

1.      前期的准备工作: 安装openssl和nginx的https模块 cd ~/ mkdir ssl cd ssl mkdir demoCA cd demoCA ...
  • u014470726
  • u014470726
  • 2017年01月05日 09:32
  • 1802

nginx中配置ssl双向认证详解

nginx中配置ssl双向认证详解 需求说明:公司内部一些业务系统对安全性要求比较高,例如mis、bi等,这些业务系统只允许公司内部人员访问,而且要求浏览器要安装证书登录,对公司入职有需求的人员开通证...
  • yuanlin65
  • yuanlin65
  • 2016年11月16日 16:12
  • 2601

https(双向认证)流程 ssl协议理解, nginx https双向认证配置

首先学习https认证流程(单向认证或者双向)
  • shandalue
  • shandalue
  • 2014年11月27日 19:55
  • 1332

nginx配置SSL实现服务器/客户端双向认证

本人不才,配置了两天,终于搞出来了,结合网上诸多博文,特此总结一下! 配置环境:       Ubuntu 11.04      PCRE 8.31      Openssl 2.0.2  ...
  • kunoy
  • kunoy
  • 2012年11月29日 16:41
  • 44752

Java nginx https 双向认证

最近要做个https 双向认证的,就做了个demo,踩了不少坑,记录一下. 主要还是对原理理解不够透彻,刚开始直接从网上搬个例子就用,结果大部分都不适用....
  • qq315737546
  • qq315737546
  • 2016年10月20日 23:29
  • 2583

nginx SSL双向认证

一.建立证书授权中心 1.检查是否已经安装openssl #which openssl /usr/bin/openssl 2.创建CA目录 #mkdir /usr/local/nginx/conf/...
  • zhangyunpengchang
  • zhangyunpengchang
  • 2016年07月05日 17:20
  • 526

nginx配置https双向认证

网上找了很多nginx的https配置,还是这个最靠谱。http://www.cnblogs.com/dyllove98/p/3157370.html上一篇介绍了SSL双向认证的一些基本问题,以及使用...
  • langeldep
  • langeldep
  • 2017年01月23日 00:19
  • 2339

Nginx证书配置:tomcat证书jks文件转nginx证书.cet和key文件

Nginx服务器配置证书:tomcat的jks转换
  • liuchuan_com
  • liuchuan_com
  • 2017年01月12日 11:15
  • 2566

Nginx、Tomcat、SSL、双向认证

1. 证书层级结构 2. 服务器结构 tomcat不要求认证客户端,nginx要求认证客户端 3. tomcat配置注意点 tomcat的服务器证书的CN必...
  • midion9
  • midion9
  • 2016年05月25日 11:14
  • 325

nginx配置将http请求转发支持ssl双向认证https请求的正向代理

一、引言 nginx 是否支持将http请求转发为https支持ssl双向认证,网上没什么用例可以参考,查询各大开发运维社区了下有几种说法支持: 不支持: 不清楚家祭不忘告乃翁: https://...
  • MEdwardM
  • MEdwardM
  • 2017年05月22日 09:59
  • 7858
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Nginx配置https双向认证
举报原因:
原因补充:

(最多只允许输入30个字)