Nginx的客户端/服务端双向SSL证书认证配置

1,准备工作:安装openssl和nginx(注意使用编译选项--with-http_ssl_module 支持ssl)

2,根证书

new_ca.sh  这个脚本会建立一个demoCA的目录以及根证书文件,后面都会用到做证书的签署

#!/bin/sh
/usr/local/ssl/misc/CA.sh -newca


3,服务端证书

new_server.sh 这个脚本建立服务端证书和私钥,并签署证书

#!/bin/sh
#生成密钥
openssl genrsa -des3 -out server.key 2048
#生成证书签名请求文件
openssl req -new -key server.key -out newreq.pem -days 365
#进行签证
./CA.sh -sign
#最终服务端证书
mv newcert.pem server.crt

4,客户端证书

new_client.sh 这个脚本建立客户端证书和私钥,并签署证书

#!/bin/sh
#客户端:
#生成密钥
openssl genrsa -des3 -out client.key 2048
#生成证书签名请求文件
openssl req -new -key client.key -out client.csr
#签署客户端证书
openssl ca -in client.csr -out client.crt
#创建pkcs12文件
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx


cp demoCA/cacert.pem ca.crt


在证书生成过程中需要输入一些资料,有几项是需要与根证书匹配的

countryName = match 
stateOrProvinceName = match 
organizationName = match 
organizationalUnitName = match 



5,nginx配置

# HTTPS server
#
server {
listen   443;
server_name  localhost;
# 打开ssl
ssl  on;
# 服务器证书 //目录根据你生成证书时的情况决定
ssl_certificate  /etc/ssl/private/server.crt;
# 服务器证书公钥
ssl_certificate_key  /etc/ssl/private/server.key;
# 客户端证书签名
ssl_client_certificate   /etc/ssl/private/ca.crt;
# ssl session 超时
ssl_session_timeout  5m;
# 打开SSL客户端校验 (双向证书检测)
ssl_verify_client on;

#ssl_protocols  SSLv2 SSLv3 TLSv1;
#ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers   on;

location / {
root   /var/www/nginx-default;
index  index.html index.htm;
}

6,浏览器配置

根据浏览器的不同,导入client.pfx

你可能感兴趣的:(工作,nginx,浏览器,脚本)