글 작성일은 2022년 7월 22일 입니다.
시간이 갈 수록 변화하기 때문에 작성 일자를 적어 둡니다.
IIS Crypto로 Windows Server의 TLS 버전 제한 및 cipher suites 제한시 MSSQL 연결에 문제가 생길 수 있습니다.
(구버전 SQL 서버)
System.Data.SqlClient.SqlException (0x80131904): 서버에 연결했지만 로그인하는 동안 오류가 발생했습니다. (provider: SSL Provider, error: 0 - 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다.) ---> System.ComponentModel.Win32Exception (0x80004005): 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다 --- 내부 예외 스택 추적의 끝 --- 위치: System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager) 위치: System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) 위치: System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) 위치: System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) 위치: System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) 위치: System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) 위치: System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) 위치: System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) 위치: System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) 위치: System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) 위치: System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) 위치: System.Data.SqlClient.SqlConnection.Open()
MSSQL의 TDS 연결은 TLS 1.0, TLS 1.1 사용하기에 Windows Server의 Client TLS 버전은 1.2로 제한할 경우 위와 같은 오류가 발생할 수 있습니다.
추천하는 방법은 아래와 같습니다.
* 해당 설정은 WAS로 사용되는 IIS 서버에서 설정한 내용입니다.
1. Schannel
Hashes에서 SHA 선택, Client Propocols 에서 TLS 1.0, TLS 1.1 추가 선택
2. Cipher Suites
붉은색 부분 - TLS 1.2 사용
녹색 부분 - TLS 1.2 사용이나 Week 상태의 Cipher Suites 입니다. 하위 브라우저 호환을 위해서 선택,
파란색 부분 - SQL 하위 버전 연결을 위해서 사용하는 Cipher Suites 입니다.
'Server > Windows Server' 카테고리의 다른 글
dism 복구 (0) | 2022.08.18 |
---|---|
[Hyper-V] 예기치 않은 오류가 발생했습니다. 로그온 실패: 사용자는 이 컴퓨터에서는 요청된 로그온 유형을 허가받지 않았습니다.(0x80070569). (0) | 2022.07.27 |
[PowerShell] Windows Server Backup (0) | 2022.02.24 |
[PowerShell] Windows 자동 업데이트 (0) | 2022.02.24 |
HTTPS 연결(SSL)시 ERR_CONNECTION_RESET 문제. TLS cipher (0) | 2018.08.31 |