1. CA与自签名
制作 CA 私钥:
cd /App/nginx/conf
mkdir -p ssl
openssl genrsa -out ca.key 2048制作 CA 公钥/根证书:
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=CN/ST=BeiJing/L=HaiDian/O=SHAREit Inc./OU=App/CN=root"2. 服务器端证书
制作服务器端私钥:
openssl genrsa -out server.pem 2048
openssl rsa -in server.pem -out server.key生成签发请求:
openssl req -new -key server.pem -out server.csr -subj "/C=CN/ST=BeiJing/L=HaiDian/O=SHAREit Inc./OU=App/CN=域名"CN 为服务器的域名,不能与 CA 的相同。
用 CA 签发证书:
openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt3. 客户端证书
制作私钥:
openssl genrsa -out client.pem 2048
openssl rsa -in client.pem -out client.key生成签发请求:
openssl req -new -key client.pem -out client.csr -subj "/C=CN/ST=BeiJing/L=HaiDian/O=SHAREit Inc./OU=App/CN=域名"CN 为服务器的域名,不能与 CA 的相同。
用 CA 签发:
openssl x509 -req -sha256 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out client.crt如果是浏览器访问,需要将证书转换为 p12 格式,然后手动导入浏览器:
openssl pkcs12 -export -clcerts -in client.crt -inkey client.pem -out client.p124. Nginx 配置 server 段添加指令
ssl_verify_client on;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
ssl_client_certificate ssl/ca.crt;5. 验证
curl --insecure --key client.key --cert client.crt 'https://域名'









