自建CA证书实现SSL证书-双向认证
双向认证的实现逻辑
具体实现
...
default_days = 3650 # how long to certify for
default_crl_days= 3650 # how long before next CRL
...touch index.txt
echo 01 > serial
echo 01 > crlnumber
mkdir private newcerts crl
# 创建CA证书
## 创建CA私钥
openssl genrsa -out private/cakey.pem 2048
## 用CA私钥生成请求文件
openssl req -days 3650 -new -key private/cakey.pem -out private/cacsr.pem
## CA签署证书
openssl x509 -req -days 3650 -in private/cacsr.pem -signkey private/cakey.pem -out cacert.pem
# 创建服务证书(用于nginx上配置)
## 创建服务端用的私钥文件
openssl genrsa -out newcerts/server-key.pem 2048
## 用服务端私钥文件生成请求文件server-csr.pem
## 生成服务器证书(openssl) hostname配置为nginx SSL证书的域名。
openssl req -days 3650 -new -out newcerts/server-csr.pem -key newcerts/server-key.pem
## 签署服务端用的证书文件server-cert.pem
openssl x509 -req -in newcerts/server-csr.pem -out newcerts/server-cert.pem -CA cacert.pem -CAkey private/cakey.pem -CAcreateserial -days 3650
## 为用户创建证书,过程跟服务端一样,只是多了一步将证书文件转换格式为p12方便导入。
openssl genrsa -out newcerts/liqiao-key.pem 2048
## 生成客户端证书 hostname配置为用户名称,方便识别,每个用户一个。
openssl req -new -out newcerts/liqiao-csr.pem -key newcerts/liqiao-key.pem
openssl x509 -req -in newcerts/liqiao-csr.pem -out newcerts/liqiao-cert.pem -CA cacert.pem -CAkey private/cakey.pem -CAcreateserial -days 3650
## 转换格式为p12方便电脑导入
openssl pkcs12 -export -in newcerts/liqiao-cert.pem -inkey newcerts/liqiao-key.pem -out newcerts/liqiao.p12
# 同步吊销信息到ca.crl文件,nginx用ca.crl这个文件的内容来判断用户的证书是否有效。
openssl ca -gencrl -out crl/ca.crl
# 吊销用户证书
openssl ca -revoke newcerts/liqiao-cert.pem
# 每次吊销完证书后需要执行同步,更新ca.crl文件信息。
openssl ca -gencrl -out crl/ca.crl
错误处理记录
最后更新于