-
Notifications
You must be signed in to change notification settings - Fork 374
Description
Please check the FAQ (frequently-asked questions) first. If you have other questions or something to report, please address the following (skipping questions might delay our responses):
PHP version
php:8.2.8-fpm-bullseye@sha256:a90c4f5aef3191ad245f59c3b607a9d7e9bc10ce96bf3e1066a9fd536304a4bf
PHP SQLSRV or PDO_SQLSRV version
v5.11.1
Microsoft ODBC Driver version
8.3.1.1-1
SQL Server version
mcr.microsoft.com/mssql/server:2019-CU20-ubuntu-20.04@sha256:5e67a797c69eba6382b1edd34de711cc03d4347dabefcc5a14fbca71e8214315
Client operating system
docker for mac
Problem description
When using encryption with a self-signed certificate, e.g.
'Encrypt' => 'Yes',
'TrustServerCertificate' => 'Yes'
is no longer working as of v5.11.1. Reverting back to v5.11.0 allows self-signed certificates to be used again.
Expected behavior and actual behavior
I get a self-signed certificate error indicating that TrustServerCertificate
is being ignored. Downgrading to v5.11.0 causes the self-signed certificate error to go away with an otherwise identical config.
Array ( [0] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => -1 [code] => -1 [2] => [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate] [message] => [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate] ) [1] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => -1 [code] => -1 [2] => [Microsoft][ODBC Driver 18 for SQL Server]Client unable to establish connection. For solutions related to encryption errors, see https://go.microsoft.com/fwlink/?linkid=2226722 [message] => [Microsoft][ODBC Driver 18 for SQL Server]Client unable to establish connection. For solutions related to encryption errors, see https://go.microsoft.com/fwlink/?linkid=2226722 ) )
Repro code or steps to reproduce
if (!isset($conn)) {
$connectionInfo = [
"UID" => $dbUser,
"PWD" => $dbPass,
"Database" => $dbName,
"LoginTimeout" => 10,
"CharacterSet" => 'UTF-8',
"ConnectRetryCount" => 5,
'Encrypt' => 'Yes',
'TrustServerCertificate' => 'Yes'
];
$conn = sqlsrv_connect("$dbHost, $dbPort", $connectionInfo);
if ($conn === false) {
$errors = sqlsrv_errors();
http_response_code(503);
die(print_r($errors, true));
}
}