Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2890324
  • 博文数量: 348
  • 博客积分: 2907
  • 博客等级: 中校
  • 技术积分: 2272
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 09:16
个人简介

专注 K8S研究

文章分类

全部博文(348)

文章存档

2019年(22)

2018年(57)

2016年(2)

2015年(27)

2014年(33)

2013年(190)

2011年(3)

2010年(14)

分类: 系统运维

2018-12-07 17:21:54

  • 摘要:一、引言nginx是否支持将http请求转发为https支持ssl双向认证,网上没什么用例可以参考,查询各大开发运维社区了下有几种说法支持:不支持:不清楚家祭不忘告乃翁:多种方法,按照以上支持的小伙伴的说法,一种种去尝试(虽然发现各种不合理,完全没有涉及到客户端密钥对的使用的说法的),但是还是坚定的一种种去尝试了,做法都围绕着以下几个关键retrun301rew




  • 一、引言 

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


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


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


    retrun 301 
    rewrite 
    listen443 ssl; 
    ssl_certificate
    ssl_certificate_key
    proxy_pass

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


    retrun 301 
    rewrite 

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


    listen443 ssl; 
    ssl_certificate
    ssl_certificate_key


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


    ssl_client_certificateon; 
    ssl_client_certificateca.cer;


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


    proxy_pass


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


    二、发掘官方文档 

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



    发现以下配置项目


    proxy_ssl_certificate 
    proxy_ssl_certificate_key 

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


    server { 
    listen0.0.0.0:9999; 
    #server_name localhost; 
    access_logoff; 
    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_redirectoff; 
    proxy_ssl_certificate certs/client.cer; 
    proxy_ssl_certificate_keycerts/client.key; 
    proxy_pass


    三、测试用例 
    curl -d 'params=aaa'

    有正确返回,测试成功

  • 以上是的内容,更多 的内容,请您使用右上方搜索功能获取相关信息。
阅读(2136) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~