에러 발생
라라벨 프로젝트에서 MSSQL 서버에 연결 실패하며 에러 메시지 발생.
Error Message
Illuminate\Database\QueryException
SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate] (SQL: select top 10 * from TA_ORDER_DATA)
서버간 보안 연결 여부에 따라 발생할 수 있다(SSL 인증서 적용 여부 등).
아래는 microsoft 의 문서 설명이다.
키 | 값 | Description | 기본값 |
TrustServerCertificate | 인증서를 신뢰하려면 1 또는 true 입니다. 인증서를 신뢰하지 않으려면 0 또는 false 입니다. |
클라이언트가 자체 서명된 서버 인증서를 신뢰해야 하는지(1 또는 true) 또는 거부해야 하는지(0 또는 false) 여부를 지정합니다. | false(0) |
해결 방법
config/database.php 파일을 열어 sqlsrv 연결 설정에
'trust_server_certificate' => true 라인을 추가한다(true 로 안되면 false).
...(생략)...
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => env('DB_MSSQL_HOST', 'x.x.x.x'),
'port' => env('DB_MSSQL_PORT', '1433'),
'database' => env('DB_MSSQL_DATABASE', 'forge'),
'username' => env('DB_MSSQL_USERNAME', 'forge'),
'password' => env('DB_MSSQL_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'trust_server_certificate' => true, // 추가
],
...(생략)...
레거시에서는 아래와 같이 설정했었다.
$conn_info = array("Database" => $db,
"UID" => $user,
"PWD" => $pass,
"CharacterSet" => "UTF-8",
"Encrypt" => false,
"TrustServerCertificate" => false
);
$db_conn = sqlsrv_connect($host, $conn_info) or die( print_r(sqlsrv_errors(), true));
참고문헌 및 관련링크
- 연결 옵션 - PHP drivers for SQL Server | Microsoft Learn
'코딩 > Laravel' 카테고리의 다른 글
라라벨 - 파일 업로드 (0) | 2024.06.24 |
---|---|
laravel - AJAX 전송 시 Content-Type 지정 (Error 405) (0) | 2024.06.24 |
Laravel - MSSQL 서버 연동 오류 QueryException could not find driver (0) | 2023.08.29 |
Laravel - 라라벨 GROUP BY 에러 SQLSTATE[42000]: Syntax error or access violation: 1055 (0) | 2023.02.08 |
Laravel - 리눅스 Ubuntu 라라벨 설치 (0) | 2022.06.24 |