nginx配置将http请求转发支持ssl双向认证https请求的正向代理

转载地址:http://blog.csdn.net/medwardm/article/details/72621527

一、引言

nginx 是否支持将http请求转发为https支持ssl双向认证,网上没什么用例可以参考,查询各大开发运维社区了下有几种说法

  • 支持:
  • 不支持:
  • 不清楚家祭不忘告乃翁:

https://www.bjornjohansen.no/redirect-to-https-with-nginx

N多种方法,按照以上支持的小伙伴的说法,一种种去尝试(虽然发现各种不合理,完全没有涉及到客户端密钥对的使用的说法的),但是还是坚定的一种种去尝试了,做法都围绕着以下几个关键

  • retrun 301
  • rewrite
  • listen 443 ssl; 
    ssl_certificate www.example.com.crt; 
    ssl_certificate_key www.example.com.key;
  • proxy_pass https:// host request_uri

然而我发现,上面说的都不是做为支持SSL双向认证的正向代理

  • retrun 301
  • rewrite

以上的做法是请求重定向,并没有起到多大作用

  • listen 443 ssl; 
    ssl_certificate www.example.com.crt; 
    ssl_certificate_key www.example.com.key;

    此类配置是Ngnix配置一个https server,证书密钥对配置的是服务端的证书,并不是作为客户端代理的配置

  • ssl_client_certificate on; 
    ssl_client_certificate ca.cer;

    此类配置的是Nginx的https server要求进水SSL客户证书认证,也就算此服务要求进行SSL双向认证,ca.cer是签发客户证书的CA证书,用来验证客户证书。

  • proxy_pass https:// host request_uri

proxy_pass 这个是代理配置项是正确的做法,然而网上并没有相关ssl双向认证的使用用例

二、发掘官方文档

没有相关使用案例就自己上官方文档发掘,查看ngx_http_proxy_module的相关配置

http://nginx.org/en/docs/http/ngx_http_proxy_module.html

发现以下配置项目

  • proxy_ssl_certificate
  • proxy_ssl_certificate_key

毫无疑问这个就是我们要寻找的配置内容,配置客户端证书密钥对的配置项目,在本地开启一个要求进行ssl双向认证的的https server,生成好相关证书和密钥,进行测试

    server {
        listen       0.0.0.0:9999;
        #server_name localhost;
        access_log  off;
        location / {
            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_redirect    off; 
            proxy_ssl_certificate        certs/client.cer;
            proxy_ssl_certificate_key    certs/client.key;
            proxy_pass   https://127.0.0.1:8443$request_uri;
        }
    }

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

三、测试用例

curl -d 'params=aaa' http://127.0.0.1:9999/index.json
 
 
  • 1
  • 1

有正确返回,测试成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值