Edit report at http://bugs.php.net/bug.php?id=52106&edit=1

 ID:                 52106
 Comment by:         personseb at yahoo dot fr
 Reported by:        sc0ttbeardsley at gmail dot com
 Summary:            fopen fails on some SSL urls
 Status:             Open
 Type:               Bug
 Package:            OpenSSL related
 Operating System:   Ubuntu Lucid/Maverick
 PHP Version:        5.3.2
 Block user comment: N

 New Comment:

same problem here...



Warning: fsockopen() [function.fsockopen]: SSL operation failed with
code 1. 

OpenSSL Error messages: error:14077438:SSL
routines:SSL23_GET_SERVER_HELLO:tlsv1 

alert internal error in /www/test_servicesWS_sp.php on line 16



Warning: fsockopen() [function.fsockopen]: Failed to enable crypto in 

/www/test_servicesWS_sp.php on line 16



Warning: fsockopen() [function.fsockopen]: unable to connect to 

ssl://192.168.0.1:443 (Unknown error) in /www/test_servicesWS_sp.php on
line 16

(0)



PHP 5.3.2

OpenSSL 1.0.0

OS CentOS


Previous Comments:
------------------------------------------------------------------------
[2010-08-23 12:50:16] k dot nagurski at ulster dot ac dot uk

We're having the same problem with connecting to a box running our
student records 

system.



We've tested this using Zend Server 5.0.2 using RHEL, with PHP version
is 5.3.2. 

We've also been able to reproduce this on Zend Server CE 5.0.2 using
MacOSX, also 

PHP version 5.3.2.



As far as we can see, this popped up with 5.3.2 as we cannot reproduce
the problem 

with a version of Zend Server CE running PHP 5.3.1.

------------------------------------------------------------------------
[2010-06-17 19:45:19] sc0ttbeardsley at gmail dot com

substitute Lucid in my last comment with PHP v5.3.2 and Karmic with PHP
v5.2.10

------------------------------------------------------------------------
[2010-06-17 19:43:43] sc0ttbeardsley at gmail dot com

An update... I've discovered that the cas.ucdavis.edu machine does not
correctly 

deal with fragmented IP packets. I thought this might be the problem but


then I went looking for those types of packets and found none (I'll
still try to 

get that fixed though).



Then I discovered that on the "client hello" packet (first packet after
the 

connection is established) on a Lucid machine shows up in wireshark as
the TLSv1 

protocol and on a Karmic machine it shows up as a SSLv2 protocol.



I wonder why this changed? Did the defaults for openssl change or
something?

------------------------------------------------------------------------
[2010-06-17 00:35:32] sc0ttbeardsley at gmail dot com

This might not be an fopen() problem. The following code won't work
either:





<?php

$fp = fsockopen("ssl://cas.ucdavis.edu", 443, $errno, $errstr, 30);

if (!$fp) {

    echo "$errstr ($errno)<br />\n";

} else {

    $out = "GET /cas/login HTTP/1.1\r\n";

    $out .= "Host: cas.ucdavis.edu\r\n";

    $out .= "Connection: Close\r\n\r\n";

    fwrite($fp, $out);

    while (!feof($fp)) {

        echo fgets($fp, 128);

    }

    fclose($fp);

}

?>



$ php bug2.php

The following is printed:

PHP Warning:  fsockopen(): SSL operation failed with code 1. OpenSSL
Error 

messages:

error:140773F2:SSL routines:func(119):reason(1010) in bug2.php on line
2

PHP Warning:  fsockopen(): Failed to enable crypto in bug2.php on line
2

PHP Warning:  fsockopen(): unable to connect to
ssl://cas.ucdavis.edu:443 

(Unknown error) in bug2.php on line 2

 (0)<br />

$

------------------------------------------------------------------------
[2010-06-17 00:10:18] sc0ttbeardsley at gmail dot com

Description:
------------
This bug is being filed as requested on the Ubuntu bug tracker see[1].



I'm having problems running the script below using the version of php5
that 

comes with Lucid (Clint Byrum reproduced it in Maverick and the php5
svn).



For some reason this is only happening on one of our servers. Whenever I
try to 

run fopen() against it I get a "SSL operation failed with code 1.
OpenSSL Error 

messages: error:140773F2:SSL routines:func(119):reason(1010)" message. I


attached a tcpdump of a similar transaction (instead of yale it was
google) 

here[2].



As you can see from the dump, Google is working but my server is not. I
get an 

SSL alert packet (packet #29) back with SSL code 10 (unexpected
message). I 

can't seem to reproduce it on other HTTPS servers (yet).



What is funny is that I get an ACK right before that. It seems like
maybe the 

server is sending an ACK, client starts talking, server isn't ready and
sends an 

out-of-order message. I'm not sure if it is my https server that is
barfing or 

it is fopen() that is sending the wrong packets. This script works fine
on 

karmic (PHP 5.2.10-2ubuntu6.4),



Scott

------------

[1] https://bugs.launchpad.net/ubuntu/+source/php5/+bug/592442

[2] http://launchpadlibrarian.net/50098267/out.dump

Test script:
---------------
<?php

$ctx = stream_context_create(array('ssl'=>array('verify_peer'=>true,
'capath'=>'/etc/ssl/certs')));

$uris = array(  "https://cas.ucdavis.edu/login";, 

                "https://www.google.com/";,);



$uris = array (
"https://cas.ucdavis.edu/cas/login","https://secure.its.yale.edu/cas/login";,
);



foreach ($uris as &$uri) {

        print "checking $uri\n";

        fopen("$uri",'r',false,$ctx);

}

?>

Expected result:
----------------
checking https://cas.ucdavis.edu/cas/login

checking https://secure.its.yale.edu/cas/login

Actual result:
--------------
checking https://cas.ucdavis.edu/cas/login

PHP Warning:  fopen(): SSL operation failed with code 1. OpenSSL Error
messages:

error:140773F2:SSL routines:func(119):reason(1010) in /root/bug.php on
line 10

PHP Warning:  fopen(): Failed to enable crypto in /root/bug.php on line
10

PHP Warning:  fopen(https://cas.ucdavis.edu/cas/login): failed to open
stream: 

operation failed in /root/bug.php on line 10

checking https://secure.its.yale.edu/cas/login


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=52106&edit=1

Reply via email to