CA 根证书制作
# 创建 CA 私钥 openssl genrsa -out ca.key 2048 #制作 CA 根证书(公钥) openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
注意:
CA 证书中的 Common Name 不能与 server 和 client 证书中的 Common Name 相同
制作证书
# 创建私钥 openssl genrsa -out server.pem 1024 openssl rsa -in server.pem -out server.key # 生成签发请求 openssl req -new -key server.pem -out server.csr # 使用 CA 证书进行签发 openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt # 验证签发证书是否正确 openssl verify -CAfile ca.crt server.crt # 制作 p12 证书(导入浏览器) openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
客户端证书创建方式与服务器证书创建方式相同
nginx 配置
ssl on; ssl_certificate ssl/server.crt; ssl_certificate_key ssl/server.key; ssl_client_certificate ssl/ca.crt; ssl_verify_client on;
使用
curl --key client.key --cert client.crt -XGET "https://localhost:11443" -k -v