From:             yqbjtu at 163 dot com
Operating system: All
PHP version:      5.5.1
Package:          OpenSSL related
Bug Type:         Feature/Change Request
Bug description:PHP doesnot support TLSv1.1 and TLSv1.2

Description:
------------
When I used stream_socket_client method to connect a server,which enabled
the TLSv1.2, my php have 100% CPU usage, but can't connect to the server. 
I checked the stream_get_transports();,found that PHP only supports the tcp
[1] => udp [2] => ssl [3] => sslv3 [4] => sslv2 [5] => tls.  

I checked the source code, found that it does not support TLSv1.1 and
TLSv1.2.

I found it is very simple to support TLSv1.2, if possible, I can do it.
----------------------------the following is the supported protocols:
  C:\E\download\php-5.5.1-src\php-5.5.1-src\ext\openssl\openssl.c (5 hits)
        Line 1157:      php_stream_xport_register("ssl",
php_openssl_ssl_socket_factory TSRMLS_CC);
        Line 1158:      php_stream_xport_register("sslv3",
php_openssl_ssl_socket_factory TSRMLS_CC);
        Line 1160:      php_stream_xport_register("sslv2",
php_openssl_ssl_socket_factory TSRMLS_CC);
        Line 1162:      php_stream_xport_register("tls",
php_openssl_ssl_socket_factory TSRMLS_CC);
        Line 1165:      php_stream_xport_register("tcp",
php_openssl_ssl_socket_factory TSRMLS_CC);
        
        
        
        you can see 
        in php_stream *php_openssl_ssl_socket_factory method
(src\ext\openssl\xp_ssl.c)
                if (strncmp(proto, "ssl", protolen) == 0) {
                sslsock->enable_on_connect = 1;
                sslsock->method = STREAM_CRYPTO_METHOD_SSLv23_CLIENT;
        } else if (strncmp(proto, "sslv2", protolen) == 0) {
#ifdef OPENSSL_NO_SSL2
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSLv2 support is 
not
compiled into the OpenSSL library PHP is linked against");
                return NULL;
#else
                sslsock->enable_on_connect = 1;
                sslsock->method = STREAM_CRYPTO_METHOD_SSLv2_CLIENT;
#endif
        } else if (strncmp(proto, "sslv3", protolen) == 0) {
                sslsock->enable_on_connect = 1;
                sslsock->method = STREAM_CRYPTO_METHOD_SSLv3_CLIENT;
        } else if (strncmp(proto, "tls", protolen) == 0) {
                sslsock->enable_on_connect = 1;
                sslsock->method = STREAM_CRYPTO_METHOD_TLS_CLIENT;
        }
        
        STREAM_CRYPTO_METHOD_TLS_CLIENT definition is as following.
        
        case STREAM_CRYPTO_METHOD_TLS_CLIENT:
                        sslsock->is_client = 1;
                        method = TLSv1_client_method();
                        break;
                        

        ========================================
        There are some methods in openssl openssl\ssl.h
        TLSv1_1_client_method(void);    /* TLSv1.1 */
        TLSv1_2_client_method(void);  /* TLSv1.2 */


Expected result:
----------------
PHP does support TLSv1.1 and TLSv1.2

Actual result:
--------------
PHP does not support TLSv1.1 and TLSv1.2

-- 
Edit bug report at https://bugs.php.net/bug.php?id=65329&edit=1
-- 
Try a snapshot (PHP 5.4):   
https://bugs.php.net/fix.php?id=65329&r=trysnapshot54
Try a snapshot (PHP 5.3):   
https://bugs.php.net/fix.php?id=65329&r=trysnapshot53
Try a snapshot (trunk):     
https://bugs.php.net/fix.php?id=65329&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=65329&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=65329&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=65329&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=65329&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=65329&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=65329&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=65329&r=notwrong
Not enough info:            
https://bugs.php.net/fix.php?id=65329&r=notenoughinfo
Submitted twice:            
https://bugs.php.net/fix.php?id=65329&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=65329&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65329&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=65329&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=65329&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=65329&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65329&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=65329&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=65329&r=mysqlcfg

Reply via email to