使用wget,curl进行SSL连接失败,但是使用firefox和lynx成功

时间:2014-09-23 03:01:58

标签: curl ssl wget

我无法通过自动脚本访问此网站: https://mydtac.dtac.co.th/EserviceLogin/Login?page=N&lang=en

如果我从浏览器查看(chrome,firefox,甚至lynx正在运行),那一切都还可以。 我试着从PHP(fsockopen),wget或curl加载它,它会抱怨:

  

警告:stream_socket_enable_crypto():SSL操作失败,代码为1. OpenSSL错误消息:错误:140943FC:SSL例程:SSL3_READ_BYTES:sslv3警告错误记录mac in

openssl检查也失败了:

  

openssl s_client -connect mydtac.dtac.co.th:443   3074164412:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议:s23_clnt.c:787:

我已尝试过不同的系统(debian),包括稳定版和测试版,并且问题随处可见。

我已经在连接上完成了TCP转储,似乎工作方式和失败方法尝试初始化ssl连接的方式不同:

请求和响应失败:

  

T 192.168.1.42:60748 - > 202.91.21.208:443 [AP]     ....,...(..Ĵ... 30 ..... N [U.iv)5' ... P..2 ....... 0, 。($ ......... kj9.8 ..... 2 ... *&安培;。。....... = 5 ... / +&#39 ;. #.........克。@ 3.2 ..... ED1 .-)。%......     < / ...一个......................................... ......米........... 4.2 ............................... ....................#..... ............     .........................
  #   T 202.91.21.208:443 - > 192.168.1.42:60748 [美联社]     ......(

工作请求和回复:

  

T 192.168.1.42:60751 - > 202.91.21.208:443 [AP]     ................. 2 ... ... AXG; .. | vYV .... OS#.. WD = u.zp..R /瓦。 .... ............... 3.2.E.9.8 ..... /。A.5 ...........乙。 ........ mydtac.dtac.co.th ......     .................. ..#...........3吨
  #   T 202.91.21.208:443 - > 192.168.1.42:60751 [美联社]     ....:... 6..T ..(.. ok.q
.. A .... F?.... k。> V .... U..T ....... ^ XC .................. 0 ... 0 ............... ..一L.Gd .... 0 ... .H ........ 0f1.0 ...ù.... US1     .0 ...... U .... DigiCert Inc1.0 ... U .... www.digicert.com1%0#.. U .... DigiCert High Assurance CA-30 ... 120912000000Z..150917120000Z0 ..1.0 ...ü.... TH1.0。     ..U .... Bangkok1.0 ... U .... Pathumwan1(0& ... U ...... DTAC Internet Service Co.,Ltd.1#0!.. U ....企业服务Support1.0 ...ü.... .dtac.co.th0 .."     0 ... * H ............. 0 ......... sa.9.w..3 @ IK .... |。... F ... LGP {Ĵ.... b + .....:。...." .._ b {ç.....ħ... n.2.J .. 。!.H .. | 1,1- = .. ^ ..我@ 6 .. ^ FGG小号.... U | ..'     ... w @ .RU。> .... 3 = cc.W ...... 0U .. .....Jvlr....J.hb...p.+...d.}..A.. .;R..U.HN.\.#r%.%..F..X..;..Y&.......y....IUy>.....NU.-..$..i..I.P....... ...\c........N0..J0...U.#..0...P.s..)...... ..y.H..0...U.......-f.....U.Y.9;.....T0#..U....0...*.dtac.co.th..dtac.co.th0...U...........0...U .%..0...+.........+.......0a..U...Z0X0*.(.&.$http://crl3.digicert.com/ca3-g22.crl0*.(.&.$http://crl4.digicert.com/ca3-g22.crl0.....U. ....0. ..0.....。H ... l..0 ... 0:.. + ......... http://www.digicert.com/ssl-cps-repository.htm0..d..+.......0..V...R.A.n.y。 。使用。 。的。 。这个。 .C.e。     r.t.i.f.i.c.a.t.e. .c.o.n.s.t.i.t.u.t.e.s。 。验收。 。的。 .t.h.e。 .D.i.g.i.C.e.r.t。 .C.P ./。C.P.S。 。和。 .t.h.e。 .R.e.l.y.i.n。     G。 。派对。 。协议。 。哪一个。 。限制。 。责任。 。和。 。是。 .i.n.c.o.r.p.o.r.a.t.e.d。 .h.e.r.e.i.n。 。通过。      .r.e.f.e.r.e.n.c.e..0 {.. + ........ o0m0 $ .. + ..... 0

我试图在2天内找到一种解决方法,但却被困在这里。 任何建议都将受到高度赞赏。

我知道这是网站管理员应该调查的内容,但这不是一个选项,因为99%的人在访问这些网页时没有任何问题,他们肯定不会做任何事......

1 个答案:

答案 0 :(得分:2)

  

openssl s_client -connect mydtac.dtac.co.th:443   3074164412:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:unknown   协议:s23_clnt.c:787:

您需要使用SSLv3或TLS 1.0。您无法使用TLS 1.1或1.2发送ClientHello

首先,TLS 1.0(不要担心自签名证书警告 - 我没有使用CAfile选项):

$ /usr/local/ssl/darwin/bin/openssl s_client -tls1 -connect mydtac.dtac.co.th:443
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
 0 s:/C=TH/ST=Bangkok/L=Pathumwan/O=DTAC Internet Service Co., Ltd./OU=Enterprise Service Support/CN=*.dtac.co.th
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
...

接下来,TLS 1.2:

$ /usr/local/ssl/darwin/bin/openssl s_client -tls1_2 -connect mydtac.dtac.co.th:443
CONNECTED(00000003)
140735152734684:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:337:
...

相关,该服务器处于低级别且配置不当。如果可能,你应该避免使用它:

$ openssl s_client -ssl3 -connect mydtac.dtac.co.th:443
CONNECTED(00000003)
...
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : RC4-MD5
    Session-ID: 1C04C221FDD0501832FFD8904790A34

从SSL扫描来看,我推测它的旧IIS服务器:

$ sslscan --no-failed mydtac.dtac.co.th
                   _
           ___ ___| |___  ___ __ _ _ __
          / __/ __| / __|/ __/ _` | '_ \
          \__ \__ \ \__ \ (_| (_| | | | |
          |___/___/_|___/\___\__,_|_| |_|

                  Version 1.8.2
             http://www.titania.co.uk
        Copyright Ian Ventura-Whiting 2009

Testing SSL server mydtac.dtac.co.th on port 443

  Supported Server Cipher(s):
    Accepted  SSLv3  128 bits  ADH-RC4-MD5
    Accepted  SSLv3  128 bits  RC4-SHA
    Accepted  SSLv3  128 bits  RC4-MD5
    Accepted  SSLv3  40 bits   EXP-ADH-RC4-MD5
    Accepted  SSLv3  40 bits   EXP-RC4-MD5
    Accepted  TLSv1  256 bits  AES256-SHA
    Accepted  TLSv1  128 bits  AES128-SHA
    Accepted  TLSv1  128 bits  ADH-RC4-MD5
    Accepted  TLSv1  128 bits  RC4-SHA
    Accepted  TLSv1  128 bits  RC4-MD5
    Accepted  TLSv1  112 bits  EDH-RSA-DES-CBC3-SHA
    Accepted  TLSv1  112 bits  ADH-DES-CBC3-SHA
    Accepted  TLSv1  112 bits  DES-CBC3-SHA
    Accepted  TLSv1  56 bits   EDH-RSA-DES-CBC-SHA
    Accepted  TLSv1  56 bits   ADH-DES-CBC-SHA
    Accepted  TLSv1  56 bits   DES-CBC-SHA
    Accepted  TLSv1  40 bits   EXP-EDH-RSA-DES-CBC-SHA
    Accepted  TLSv1  40 bits   EXP-ADH-DES-CBC-SHA
    Accepted  TLSv1  40 bits   EXP-DES-CBC-SHA
    Accepted  TLSv1  40 bits   EXP-ADH-RC4-MD5
    Accepted  TLSv1  40 bits   EXP-RC4-MD5

  Prefered Server Cipher(s):
    SSLv3  128 bits  RC4-MD5
    TLSv1  128 bits  RC4-MD5