nginx配置ssl认证 及 作为ssl客户端代理

本文详细介绍了如何使用openssl生成SSL证书,包括根密钥、服务器和客户端证书,以及如何在Nginx服务器上配置SSL以实现双向认证。
摘要由CSDN通过智能技术生成

        好久没有弄证书相关的,费了些劲儿,在此记录一下。

        生成相关ssl证书,获得 ca.key ca.cart server.key server.crt client.key client.crt

#生成一个根秘钥
openssl genrsa -out ca.key 4096 
#生成数据证书 -- 去服务商购买的也是这个(他们帮你生成后发给你)
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

# 生成 server 端的私钥 (我作为server端生成自己的秘钥)
openssl genrsa -out server.key 4096
# 生成server端的数字证书(会要求输入公司xx等信息,生成完之后还不能用,不能被认可)
openssl req -new -key server.key -out server.csr
# 把ca信息加入,生成一个10年有效期的证书(证书=自己秘钥+数字签名,可以立即你的资料被盖章,变成了证件)
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650

#生成 client端证书(其实和服务端没有区别,名字不同)
openssl genrsa -out client.key 4096
openssl req -new -key client.key -out client.csr
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650

nginx配置--服务端:

server {
  #标记为ssl
  listen 8080 ssl;
  ssl_certificate /data/software/nginxWebUI/server.crt;
  ssl_certificate_key /data/software/nginxWebUI/server.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  #请求时颁发给客户端的数字证书
  ssl_client_certificate /data/software/nginxWebUI/ca.crt;
  #要求双向认证,如为off,代表接受任何请求(非我方数字签名的证书也认可,客户端只需简单代理到本https接口即可,无需多于配置)
  ssl_verify_client on;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  location / {
    add_header Content-Type "text/plain;charset=utf-8";
    proxy_ssl_trusted_certificate /data/software/nginxWebUI/ca.crt;
    return 200 "https return";
  }
}

nginx配置--客户端(将https代理成http访问):

server {
  listen 8081;
  location / {
    proxy_pass https://xxxx:xx;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-Proto $scheme;
    #信任服务端颁发的数字证书、与在浏览器安装一个道理
    proxy_ssl_trusted_certificate /data/software/nginxWebUI/ca.crt;
    proxy_ssl_certificate_key /data/software/nginxWebUI/client.key;
    proxy_ssl_certificate /data/software/nginxWebUI/client.crt;
    #此处为关键点,如为on则要求http也有证书
    proxy_ssl_verify off;
    client_max_body_size 10m;
  }
}

最后,这篇文章对双向认证有更详细的解释,mark一下:https://www.cnblogs.com/xiao987334176/p/11041241.html

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值