话不多说,直接上干货。
运行环境
Linux系统(须安装openssl)
Https证书制作
CA与自签名
进入Linux系统以后,建立一个存在证书的文件夹(任意路径)。
#mkdir key
#cd key
制作CA私钥
openssl genrsa -out ca.key 2048
制作CA公钥/根证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
然后会出现下面需要填写的内容:
国家,省份,地区,公司,部门谨慎填写,后续的服务器证书和客户端证书需保持一致。
服务器证书
制作服务器私钥
openssl genrsa -out server.pem 1024
openssl rsa -in server.pem -out server.key
生成签发请求
openssl req -new -key server.pem -out server.csr
这一部分填写内容需要与CA的一致。Common Name填写访问服务器时域名,配置nginx时用到,不能与CA的相同。
用CA签发证书
openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
客户端证书
制作私钥
openssl genrsa -out client.pem 1024
openssl rsa -in client.pem -out client.key
生成签发请求
openssl req -new -key client.pem -out client.csr
这一部分填写内容需要与CA的一致。
用CA签发
openssl x509 -req -sha256 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out client.crt
NGINX配置
在nginx配置文件里找到server节点,
ssl_certificate : 服务器公钥地址
ssl_certificate_key : 服务器私钥地址
ssl_client_certificate : CA公钥地址 验证客户端证书是否是同一CA签发
ssl_verify_client : on 打开双向认证
配置好后 重新加载NGINX : #nginx -s reload
然后将证书安装到浏览器或者postman即可。正常情况下如果浏览器未安装证书,会返回一个400 Bad request。安装后在浏览器警告情况下继续进入,即可跳出证书验证实现双向验证。