nginx 配置ssl双向证书验证

本文详细介绍了如何在CentOS上配置Nginx以实现SSL服务器和客户端的双向认证。首先,通过下载和安装openssl、zlib、pcre和Nginx等依赖包来搭建环境。接着,创建CA根证书,生成服务器和客户端证书,并转换成PKCS12格式。然后,配置Nginx和Tomcat以启用SSL双向认证。最后,验证配置是否成功,确保客户端需要提供证书才能访问。
摘要由CSDN通过智能技术生成

1. 安装 nginx

1.1 nginx 包及其依赖包下载

出于模块的依赖性,Nginx 依赖以下三个包:

分别下载它们的最新稳定版(截至本文最新稳定版分别是 zlib-1.2.8.tar.gz、pcre-8.36.tar.gz、openssl-fips-2.0.9.tar.gz),最后下载 Nginx 最新(http://nginx.org/en/download.html)稳定版(截至本文最新稳定版是 nginx-1.7.10.tar.gz)。
依赖包安装次序为:openssl、zlib、pcre,最后安装 Nginx 包。

1.2 nginx 包及其依赖包安装

1.2.1 安装 openssl

$ tar -zxvf openssl-fips-2.0.9.tar.gz
$ cd openssl-fips-2.0.9
$ ./config
$ make
$ sudo make install

1.2.2 安装 zlib

$ tar -zxvf zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ ./configure
$ make
$ sudo make install

1.2.3 安装 pcre

$ tar -zxvf pcre-8.36.tar.gz
$ cd pcre-8.36
$ ./configure
$ make
$ sudo make install

1.2.4 安装 nginx

$ tar -zxvf nginx-1.7.10.tar.gz
$ cd nginx-1.7.10
$ ./configure --with-pcre=../pcre-8.36 --with-zlib=../zlib-1.2.8 --with-openssl=../openssl-fips-2.0.9
$ make
$ sudo make install

nginx 被默认安装在 /usr/local/nginx 目录。

1.3 验证 Nginx 是否安装成功

$ sudo /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

证明 Nginx 安装成功。

 

2. SSL 服务器 / 客户端双向验证证书的生成

2.1 创建一个新的 CA 根证书

在 nginx 安装目录下新建 ca 文件夹,进入 ca,创建几个子文件夹:
$ sudo mkdir ca
$ cd ca
$ sudo mkdir newcerts private conf server

newcerts 子目录将用于存放 CA 签署过的数字证书(证书备份目录);private 用于存放 CA 的私钥;conf 目录用于存放一些简化参数用的配置文件;server 存放服务器证书文件。

2.1.1 conf 目录新建 openssl.conf 文件

编辑其内容如下:

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
 
  1. [ ca ]  
  2. default_ca      = foo                   # The default ca section  
  3.    
  4. [ foo ]  
  5. dir            = /usr/local/nginx/ca         # top dir  
  6. database       = /usr/local/nginx/ca/index.txt          # index file.  
  7. new_certs_dir  = /usr/local/nginx/ca/newcerts           # new certs dir  
  8.    
  9. certificate    = /usr/local/nginx/ca/private/ca.crt         # The CA cert  
  10. serial         = /usr/local/nginx/ca/serial             # serial no file  
  11. private_key    = /usr/local/nginx/ca/private/ca.key  # CA private key  
  12. RANDFILE       = /usr/local/nginx/ca/private/.rand      # random number file  
  13.    
  14. default_days   = 365                     # how long to certify for  
  15. default_crl_days= 30                     # how long before next CRL  
  16. default_md     = md5                     # message digest method to use  
  17. unique_subject = no                      # Set to 'no' to allow creation of  
  18.                                          # several ctificates with same subject.  
  19. policy         = policy_any              # default policy  
  20.    
  21. [ policy_any ]  
  22. countryName = match  
  23. stateOrProvinceName = match  
  24. organizationName = match  
  25. organizationalUnitName = match  
  26. localityName            = optional  
  27. commonName              = supplied  
  28. emailAddress            = optional  

 

2.1.2 生成私钥 key 文件

$ cd /usr/local/nginx/ca
$ sudo openssl genrsa -out private/ca.key

输出
Generating RSA private key, 512 bit long modulus
..++++++++++++
.++++++++++++
e is 65537 (0x10001)

private 目录下有 ca.key 文件生成。

博主 20150520 加注:openssl 默认生成 512 位的。一般是用 2048 位的。

2.1.3 生成证书请求 csr 文件

$ sudo openssl req -new -key private/ca.key -out private/ca.csr
Country Name
提示输入 Country Name,输入 CN 并回车后:
State or Province Name
提示输入 State or Province Name (full name),输入 Shanghai 并回车后:
Locality Name
提示输入 Locality Name,输入 Shanghai 并回车后:
Organization Name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值