上一篇介绍了SSL双向认证的一些基本问题,以及使用Nginx+PHP基于它搭建https的Webservice。
之前的方式只是实现1:1的模式,昨天同事继续实现了n:1的模式,这里我再整理记录下。
由于nginx的ssl_client_certificate参数只能指定一个客户端公钥,如果增加一个客户端进行通信就要重新配一个server。
n:1的模式是通过CA的级联证书模式实现的,首先自己生成一套CA根级证书,再借助其生成二级证书作为client证书。
此时client私钥签名不仅可以通过对应的client公钥验证,还可通过根证书的公钥进行验证。
看到这里应该豁然开朗了吧,下面简单介绍下具体怎么操作:
1 准备工作
1.1 openssl目录准备
一般情况下openssl的配置文件都在这个目录/etc/pki/tls,so:
mkdir /etc/pki/ca_linvo
cd /etc/pki/ca_linvo
mkdir root server client newcerts
echo 01 > serial
echo 01 > crlnumber
touch index.txt
1.2 openssl配置准备
修改openssl配置
vi /etc/pki/tls/openssl.cnf
找到这句注释掉,替换为下面那句
#default_ca = CA_default
default_ca = CA_linvo
把