<div dir="ltr"><div style="font-size:12.8px">Hi,</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I had a problem with secure connection to sql server.</div><div style="font-size:12.8px">I use mysqli extension, I configured server['ssl'] = true. I have a user 'szabolcs' in sql who needs ssl.</div><div style="font-size:12.8px">First I received 'mysqli_real_connect(): (HY000/1045): Access denied for user 'szabolcs'@'localhost' (using password: YES)'.</div><div style="font-size:12.8px">That was why PMA doesn't use MYSQLI_CLIENT_SSL. I should add it to $client_flags.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">After this I got the following error:'mysqli_query(): SSL operation failed with code 1. OpenSSL Error messages: error:0607A082:digital envelope routines:EVP_CIPHER_CTX_set_key_length:invalid key length error:0607A082:digital envelope routines:EVP_CIPHER_CTX_set_key_length:invalid key length'.</div><div style="font-size:12.8px">PMA uses openssel functions to encrypt values in cookie if openssl functions exist, other case PMA uses Crypt\AES. With Crypt\AES PMA works fine.</div><div style="font-size:12.8px">I don't know the exact source of this problem. I think openssl functions have a bug.</div><div style="font-size:12.8px">Because the mysqli connection with ssl is successful  After connection in common.inc.php $auth_plugin->storeUserCredentials() is called. This function stores the username and password and other parameters into cookie. To encrypt:</div><div style="font-size:12.8px">openssl_encrypt(</div><div style="font-size:12.8px">                $data,</div><div style="font-size:12.8px">                'AES-128-CBC',</div><div style="font-size:12.8px">                $secret,</div><div style="font-size:12.8px">                0,</div><div style="font-size:12.8px">                $this->_cookie_iv</div><div style="font-size:12.8px">            );</div><div style="font-size:12.8px">I think the problem is that openssl_encrypt change the cipher to AES-128-CBC globally. It means the cipher of mysqli connection is also modified. This is why mysqli_query failed after encryption.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Here is my solution:<br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">diff -ruN original/libraries/dbi/DBIMysqli.php working/libraries/dbi/DBIMysqli.php</div><div style="font-size:12.8px">--- original/libraries/dbi/DBIMysqli.php        2016-05-25 19:07:44.000000000 +0200</div><div style="font-size:12.8px">+++ working/libraries/dbi/DBIMysqli.php 2016-05-26 15:55:49.000000000 +0200</div><div style="font-size:12.8px">@@ -152,6 +152,7 @@</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">         /* Optionally enable SSL */</div><div style="font-size:12.8px">         if ($cfg['Server']['ssl']) {</div><div style="font-size:12.8px">+           $client_flags |= MYSQLI_CLIENT_SSL;</div><div style="font-size:12.8px">             mysqli_ssl_set(</div><div style="font-size:12.8px">                 $link,</div><div style="font-size:12.8px">                 $cfg['Server']['ssl_key'],</div><div style="font-size:12.8px">diff -ruN original/libraries/plugins/auth/AuthenticationCookie.php working/libraries/plugins/auth/AuthenticationCookie.php</div><div style="font-size:12.8px">--- original/libraries/plugins/auth/AuthenticationCookie.php    2016-05-25 19:07:44.000000000 +0200</div><div style="font-size:12.8px">+++ working/libraries/plugins/auth/AuthenticationCookie.php     2016-05-26 15:56:27.000000000 +0200</div><div style="font-size:12.8px">@@ -661,6 +661,7 @@</div><div style="font-size:12.8px">      */</div><div style="font-size:12.8px">     public static function useOpenSSL()</div><div style="font-size:12.8px">     {</div><div style="font-size:12.8px">+       return false;</div><div style="font-size:12.8px">         return (</div><div style="font-size:12.8px">             function_exists('openssl_encrypt')</div><div style="font-size:12.8px">             && function_exists('openssl_decrypt')</div><div style="font-size:12.8px">diff -ruN original/RELEASE-DATE-4.6.1 working/RELEASE-DATE-4.6.1</div><div style="font-size:12.8px">--- original/RELEASE-DATE-4.6.1 1970-01-01 01:00:00.000000000 +0100</div><div style="font-size:12.8px">+++ working/RELEASE-DATE-4.6.1  2016-05-02 17:24:00.000000000 +0200</div><div style="font-size:12.8px">@@ -0,0 +1 @@</div><div style="font-size:12.8px">+Mon May  2 21:23:35 UTC 2016</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Regards,</div><div style="font-size:12.8px">Szabolcs</div></div>