Bug #69524 [Opn->Fbk]: openssl-pkey-get-public() kill mysql(i) connection with ssl

From: Date: Wed, 25 Jan 2017 07:39:36 +0000
Subject: Bug #69524 [Opn->Fbk]: openssl-pkey-get-public() kill mysql(i) connection with ssl
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-206932@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=69524&edit=1 ID: 69524 Updated by: requinix@php.net Reported by: js at xim dot de Summary: openssl-pkey-get-public() kill mysql(i) connection with ssl -Status: Open +Status: Feedback Type: Bug Package: MySQLi related Operating System: Linux Debian PHP Version: 5.6.8 Block user comment: N Private report: N New Comment: https://bugs.php.net/bug.php?id=73978 looks like the same issue. @jarkkohyvarinen or anyone: What happens if you put openssl_error_string(); after your call to openssl_pkey_get_public or whatever other OpenSSL function? Previous Comments: ------------------------------------------------------------------------ [2017-01-25 07:37:58] requinix@php.net Related To: Bug #73978 ------------------------------------------------------------------------ [2017-01-25 07:17:00] jarkkohyvarinen at hotmail dot com I have also experienced the same issue with pdo-mysql. PHP 5.6.28 CentOS 6.8 OpenSSL 1.0.1e ------------------------------------------------------------------------ [2016-06-10 05:33:32] samm at net-art dot cz I can confirm the issue with pdo-mysql: This is a test script: <?php $pdo = new PDO( 'mysql:host=dbhost.com;dbname=db', 'dbuser', 'dbpass', array( /* PDO::MYSQL_ATTR_SSL_KEY =>'/path/to/client-key.pem', PDO::MYSQL_ATTR_SSL_CERT=>'/path/to/client-cert.pem', */ PDO::MYSQL_ATTR_SSL_CA =>'/etc/rds-combined-ca-bundle.pem' )); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $query="SELECT 1+1"; $query = $pdo->prepare($query); $query->execute(); $row = $query->fetch(PDO::FETCH_ASSOC); var_dump($row); $openssl_pkey_get_public = openssl_pkey_get_public('-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6ZkX4HXSiL5YPdaHeAIZ IsE+jOTdQQzl2R8geQuOB2ODtlSUzMSWEH1o4AQtdTdoQljdiUfoUQQUaMAVj4K9 QsPV8I+by3nhR2kkgjkobspnxfTbMnVkhNlAAeBOrVDO1OF32r/SWrHH1W+WnjRp g+60bAFvO06OEfVjOTlc4jJAuQq1BCuHalU88yb6wED6A9iP9FLQrQDtKUhTNXRe v/iBpCKTDGzakao6hJspNrw8sS2FsdzQ8TZdlJ4jTaT8DjMGYsu29Mrov0ybUk0D zG1Uk+os/0Bz1BnNcCIqRNuNQo5zjOOTE3DkK1Q9wse1TjEi/cCn74H9OWpSlYY3 CQIDAQAB -----END PUBLIC KEY-----'); $query="SELECT 2+2"; $query = $pdo->prepare($query); $query->execute(); $row = $query->fetch(PDO::FETCH_ASSOC); var_dump($row); ?> This is a return: # php sqltest.php array(1) { ["1+1"]=> string(1) "2" } PHP Warning: PDOStatement::execute(): SSL operation failed with code 1. OpenSSL Error messages: error:0906D06C:PEM routines:PEM_read_bio:no start line in /home/ubuntu/sqltest.php on line 31 PHP Warning: PDOStatement::execute(): MySQL server has gone away in /home/ubuntu/sqltest.php on line 31 PHP Warning: PDOStatement::execute(): Error reading result set's header in /home/ubuntu/sqltest.php on line 31 PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away in /home/ubuntu/sqltest.php:31 Stack trace: #0 /home/ubuntu/sqltest.php(31): PDOStatement->execute() #1 {main} thrown in /home/ubuntu/sqltest.php on line 31 As you could see - second query failed, right after openssl_pkey_get_public call. root@ip-172-32-2-133:~# php -v PHP 7.0.7-4+deb.sury.org~wily+1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies ------------------------------------------------------------------------ [2016-05-02 16:36:33] roy at chameleon dot ad I can confirm a similar issue when using openssl_public_encrypt If the mysql_conn has been opened before (and is using ssl) calling failing $mysqli->query() will fail with error PHP Warning: mysqli::query(): SSL operation failed with code 1. OpenSSL Error messages:\nerror:0906D06C:PEM routines:PEM_read_bio:no start line in XXXX on line 35\nPHP message: PHP Warning: mysqli::query(): MySQL server has gone away in XXXX on line 35\nPHP message: PHP Warning: mysqli::query(): Error reading result set's header in XXXX on line 35\n', referer: http://chameleon.ad/signup.php I am using php 5.6.18 ------------------------------------------------------------------------ [2015-04-24 14:06:27] js at xim dot de Description: ------------ mysqli => Uptime: 453701 Threads: 2 Questions: 34649 Slow queries: 0 Opens: 299 Flush tables: 1 Open tables: 151 Queries per second avg: 0.076 mysqli => Resource id #10 Warning: mysqli::stat(): SSL operation failed with code 1. OpenSSL Error messages: error:0906D06C:PEM routines:PEM_read_bio:no start line in ~/test.php on line 17 Warning: mysqli::stat(): MySQL server has gone away in ~/test.php on line 17 mysqli => --------------------- php version 5.6.6 works but not after :( Test script: --------------- $mysqli = mysqli_init(); if(!$mysqli) { exit(1);} if(!$mysqli->real_connect('host', 'user', '*********', 'information_schema', 3306, NULL, MYSQLI_CLIENT_SSL)) { exit(2); } echo 'mysqli => ' . $mysqli->stat() . "\n"; $openssl_pkey_get_public = openssl_pkey_get_public('-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6ZkX4HXSiL5YPdaHeAIZ IsE+jOTdQQzl2R8geQuOB2ODtlSUzMSWEH1o4AQtdTdoQljdiUfoUQQUaMAVj4K9 QsPV8I+by3nhR2kkgjkobspnxfTbMnVkhNlAAeBOrVDO1OF32r/SWrHH1W+WnjRp g+60bAFvO06OEfVjOTlc4jJAuQq1BCuHalU88yb6wED6A9iP9FLQrQDtKUhTNXRe v/iBpCKTDGzakao6hJspNrw8sS2FsdzQ8TZdlJ4jTaT8DjMGYsu29Mrov0ybUk0D zG1Uk+os/0Bz1BnNcCIqRNuNQo5zjOOTE3DkK1Q9wse1TjEi/cCn74H9OWpSlYY3 CQIDAQAB -----END PUBLIC KEY-----'); echo 'mysqli => ' . print_r($openssl_pkey_get_public,true) . "\n"; echo 'mysqli => ' . $mysqli->stat() . "\n"; $mysqli->close(); ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=69524&edit=1

« previous php.bugs (#206932) next »