注意: Nginx配置都是静态的,读取配置文件之后都会加载到内存中,即使文件内容变化也不会重新读取。因此当CRL文件发生变更之后,Nginx并不能意识到有新的证书被吊销了,所以必须使用
reload指令让Nginx重新读取配置文件:service nginx reload或nginx -s reload
此时重启Nginx服务,就可以完成SSL双向认证配置了。
我们签发一个证书看看:
./create_client_cert.sh --ou 财务部 --cn 财务经理 --email cy@example.com
Generating a 2048 bit RSA private key
................................+++
.............................................................................+++
writing new private key to '财务经理/财务经理.key'
-----
Using configuration from /usr/ssl/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jun 14 16:03:46 2018 GMT
Not After : May 21 16:03:46 2118 GMT
Subject:
countryName = CN
stateOrProvinceName = Shannxi
organizationName = My Company
organizationalUnitName = U8D22U52A1U90E8
commonName = U8D22U52A1U7ECFU7406
emailAddress = cy@example.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
B5:91:0B:1F:FC:25:3B:2A:F9:EF:39:39:51:E3:1F:64:78:8A:C3:75
X509v3 Authority Key Identifier:
keyid:86:55:76:15:A3:F5:58:CB:8F:39:A3:56:8E:FF:18:97:AE:27:60:0F
Certificate is to be certified until May 21 16:03:46 2118 GMT (36500 days)
Write out database with 1 new entries
Data Base Updated
tree 财务经理/
财务经理/
├── 财务经理.crt
├── 财务经理.csr
├── 财务经理.key
└── 财务经理.p12
0 directories, 4 files
这个脚本生成了私钥文件key,签证请求文件csr,经过CA签证后的证书文件crt(里面没有私钥),以及将crt文件和key进行bundle之后的PKCS12格式的证书文件p12,将p12文件下载到本地,双击一路Next导入证书即可。
注: 由于CA的证书文件不会发生变化,因此签证新的客户端证书不需要restart或reload nginx
这次打开我们的网站https://www.example.com,浏览器就会提示我们选择一个已有的客户端证书进行认证了,没问题就可以看到网站内容了
注: 每次导入新的证书之后,必须重启浏览器才能提示使用新的证书文件
按照这种方式,有多少人需要授权,就可以用这个脚本签发多少个这样的证书,用户将p12证书导入本地就可以正常访问网站了。
当我们需要收回某人的权限的时候(比如离职了),我们需要吊销他的证书:








