当前位置:  开发笔记 > 后端 > 正文

curl和openssl看到不同的发行人

如何解决《curl和openssl看到不同的发行人》经验,为你挑选了1个好方法。

我很困惑这一点,毫无疑问这是我的误解或其他一些问题,但我试图让我的机器与上游代理通话,我正在使用redsocks透明地重定向到上游.

下面我们可以看到卷曲

root@Amachine:/# curl -v -k https://bower.herokuapp.com
* Rebuilt URL to: https://bower.herokuapp.com/
* Hostname was NOT found in DNS cache
*   Trying 54.235.187.231...
* Connected to bower.herokuapp.com (54.235.187.231) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-SHA
* Server certificate:
*        subject: C=US; ST=California; L=San Francisco; O=Heroku, Inc.; CN=*.herokuapp.com
*        start date: 2014-01-21 00:00:00 GMT
*        expire date: 2017-05-19 12:00:00 GMT
*        issuer: CORPORATE PROXY

发行人似乎是公司代理人.打破所有的ssl通讯.

root@machine:/# openssl s_client -connect bower.herokuapp.com:443
CONNECTED(00000003)
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=San Francisco/O=Heroku, Inc./CN=*.herokuapp.com
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA

令我困惑的是,他们有不同的发行人.Granted curl似乎隐藏了大部分正在发生的事情.我可以指定根ca路径和openssl工作,并给我一个确定,但卷曲不知何故使用不同的路径

我实际上不确定如何调试curl上发生的事情.我以为我会得到一个类似的发行人.我可能误解了s_client的工作方式,有人知道发生了什么吗?



1> Steffen Ullr..:

您的网络中有一个SSL拦截代理,而curl正在使用它,而openssl不使用它,或者代理不拦截连接.从您的描述中不清楚案件究竟是什么,但可能是

你正在使用不同的机器,从一个连接被截获而另一个没有

拦截代理不会在没有服务器名称指示(SNI)的情况下拦截连接.Curl执行SNI而openssl不是您使用它的方式.使用-servername参数重试SNI.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有