새 SSL/TLS 인증서를 사용해 Microsoft SQL Server DB 인스턴스에 연결할 애플리케이션을 업데이트
2023년 1월 13일부터 Amazon RDS는 보안 소켓 계층(SSL) 또는 전송 계층 보안(TLS)을 사용해 RDS DB 인스턴스에 연결하기 위한 용도의 새 인증 기관(CA) 인증서를 게시하였습니다. 아래에서 새 인증서를 사용하기 위해 애플리케이션을 업데이트하는 방법에 관한 정보를 찾으실 수 있습니다.
이 주제는 클라이언트 애플리케이션에서 SSL/TLS를 사용해 DB 인스턴스에 연결하는지 여부를 판단하는 데 도움이 됩니다. SSL/TLS를 사용해 연결한다면 이 애플리케이션에서 연결 시 인증서 확인이 필요한지 여부를 추가로 확인할 수 있습니다.
참고
어떤 애플리케이션은 서버에서 인증서를 성공적으로 확인할 수 있는 경우에만 SQL Server DB 인스턴스에 연결하도록 구성되어 있습니다.
이러한 애플리케이션의 경우 클라이언트 애플리케이션 트러스트 스토어를 업데이트하여 새 CA 인증서를 포함해야 합니다.
클라이언트 애플리케이션 트러스트 스토어에서 CA 인증서를 업데이트한 후에는 DB 인스턴스에서 인증서를 교환할 수 있습니다. 이 절차를 프로덕션 환경에서 구현하기 전에 개발 또는 스테이징 환경에서 테스트해볼 것을 적극 권장합니다.
인증서 교환에 대한 자세한 내용은 SSL/TLS 인증서 교체 단원을 참조하십시오. 인증서 다운로드에 대한 자세한 내용은 SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터에 대한 연결 암호화 단원을 참조하십시오. Microsoft SQL Server DB 인스턴스에서 SSL/TLS를 사용하는 방법에 관한 자세한 내용은 Microsoft SQL Server DB 인스턴스와 함께 SSL 사용 단원을 참조하십시오.
주제
애플리케이션에서 SSL을 사용해 Microsoft SQL Server DB 인스턴스에 연결하는지 여부 확인
rds.force_ssl
파라미터의 값에 대한 DB 인스턴스 구성을 확인하십시오. 기본적으로 rds.force_ssl
파라미터는 0(해제)으로 설정됩니다. rds.force_ssl
파라미터가 1(켜짐)로 설정된 경우 클라이언트는 연결 시 SSL/TLS를 사용해야 합니다. 파라미터 그룹에 대한 자세한 내용은 Amazon RDS의 파라미터 그룹 단원을 참조하세요.
다음 쿼리를 실행하여 DB 인스턴스에 대한 모든 열린 연결에 대한 현재 암호화 옵션을 가져옵니다. 연결이 암호화되면 ENCRYPT_OPTION
열이 TRUE
를 반환합니다.
select SESSION_ID, ENCRYPT_OPTION, NET_TRANSPORT, AUTH_SCHEME from SYS.DM_EXEC_CONNECTIONS
이 쿼리는 현재 연결만 보여줍니다. 과거에 연결/연결 해제된 애플리케이션이 SSL을 사용했는지 여부는 표시되지 않습니다.
클라이언트에서 연결을 위해 인증서 확인이 필요한지 여부 확인
다양한 유형의 클라이언트에서 연결 시 인증서 확인이 필요한지 여부를 확인할 수 있습니다.
참고
나열된 것 이외의 커넥터를 사용하는 경우 암호화된 연결을 적용하는 방법에 대한 정보는 특정 커넥터 설명서를 참조하십시오. 자세한 정보는 Microsoft SQL Server 설명서의 Microsoft SQL 데이터베이스용 연결 모듈
SQL Server Management Studio
SQL Server Management Studio 연결에 암호화가 적용되는지 확인하십시오.
-
SQL Server Management Studio를 시작합니다.
-
서버에 연결에 서버 정보, 로그인 사용자 이름 및 암호를 입력합니다.
-
옵션(Options)을 선택합니다.
-
연결 페이지에서 연결 암호화가 선택되어 있는지 확인하십시오.
SQL Server Management Studio에 대한 자세한 내용은 SQL Server Management Studio 사용
sqlcmd
sqlcmd
클라이언트를 사용하는 다음 예제에서는 스크립트의 SQL Server 연결을 확인하여 성공적인 연결을 위해 유효한 인증서가 필요한지 여부를 판단하는 방법을 보여줍니다. 자세한 내용은 Microsoft SQL Server 설명서의 sqlcmd로 연결
sqlcmd
를 사용하는 경우 다음 예제와 같이 -N
명령 인수를 사용하여 연결을 암호화한다면 SSL 연결 시 서버 인증서에 대한 확인이 필요합니다.
$ sqlcmd -N -S dbinstance.rds.amazon.com -d ExampleDB
참고
sqlcmd
옵션을 사용하여 -C
를 호출하면 클라이언트 측 트러스트 스토어와 일치하지 않더라도 서버 인증서를 신뢰합니다.
ADO.NET
다음 예에서 애플리케이션은 SSL을 사용하여 연결하고, 서버 인증서를 확인해야 합니다.
using SQLC = Microsoft.Data.SqlClient; ... static public void Main() { using (var connection = new SQLC.SqlConnection( "Server=tcp:dbinstance.rds.amazon.com;" + "Database=ExampleDB;User ID=LOGIN_NAME;" + "Password=YOUR_PASSWORD;" + "Encrypt=True;TrustServerCertificate=False;" )) { connection.Open(); ... }
Java
다음 예에서 애플리케이션은 SSL을 사용하여 연결하고, 서버 인증서를 확인해야 합니다.
String connectionUrl = "jdbc:sqlserver://dbinstance.rds.amazon.com;" + "databaseName=ExampleDB;integratedSecurity=true;" + "encrypt=true;trustServerCertificate=false";
JDBC를 사용하여 연결하는 클라이언트에 대해 SSL 암호화를 활성화하려면 Java CA 인증서 저장소에 Amazon RDS 인증서를 추가해야 할 수도 있습니다. 지침은 Microsoft SQL Server 설명서의 암호화를 위한 클라이언트 구성trustStore=
을 추가하여 신뢰할 수 있는 CA 인증서 파일 이름을 직접 제공할 수도 있습니다.path-to-certificate-trust-store-file
참고
연결 문자열에 TrustServerCertificate=true
(또는 이와 동등한)를 사용하면 연결 프로세스가 트러스트 체인 검증을 건너뜁니다. 이 경우 인증서를 검증할 수 없는 경우에도 애플리케이션이 연결됩니다. TrustServerCertificate=false
사용은 인증서 검증을 강제하며, 이것이 모범 사례입니다.
애플리케이션 트러스트 스토어 업데이트
Microsoft SQL Server를 사용하는 애플리케이션의 트러스트 스토어를 업데이트할 수 있습니다. 지침은 특정 연결 암호화 단원을 참조하십시오. 또한 Microsoft SQL Server 설명서의 암호화를 위한 클라이언트 구성
Microsoft Windows 이외의 운영 체제를 사용하는 경우 새 루트 CA 인증서 추가에 대한 정보는 SSL/TLS 구현을 위한 소프트웨어 배포 설명서를 참조하십시오. 예를 들어 OpenSSL 및 GnuTLS가 널리 사용되는 옵션입니다. 이 구현 방법을 사용하여 RDS 루트 CA 인증서에 신뢰를 추가하십시오. Microsoft는 일부 시스템에 대한 인증서 구성 지침을 제공합니다.
루트 인증서 다운로드에 대한 자세한 내용은 SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터에 대한 연결 암호화 단원을 참조하십시오.
인증서를 가져오는 샘플 스크립트는 트러스트 스토어로 인증서를 가져오기 위한 샘플 스크립트 섹션을 참조하세요.
참고
트러스트 스토어를 업데이트할 때 새 인증서를 추가할 뿐 아니라 이전 인증서를 유지할 수도 있습니다.