SSL/TLS 인증서 교체 - Amazon Relational Database Service

SSL/TLS 인증서 교체

2020년 3월 5일 기준으로 Amazon RDS CA-2015 인증서는 만료되었습니다. RDS DB 인스턴스에 연결하기 위해 SSL(Secure Sockets Layer) 또는 TLS(전송 계층 보안)를 사용하거나 사용할 계획인 경우, 새 DB 인스턴스에 대해 기본적으로 활성화되어 있는 Amazon RDS CA-2019 인증서가 필요합니다. 현재, 인증서 확인과 함께 SSL/TLS를 사용하지 않는 경우에도 CA-2015 인증서가 만료되었을 수 있으며 인증서 확인과 함께 SSL/TLS를 사용하여 RDS 데이터베이스에 연결하려는 경우 CA-2019 인증서로 업데이트해야 합니다.

다음 지침에 따라 업데이트를 완료합니다. DB 인스턴스에서 새로운 CA 인증서를 사용하도록 업데이트하기 전에 RDS 데이터베이스에 연결하는 클라이언트 또는 애플리케이션을 업데이트해야 합니다.

Amazon RDS는 AWS 보안 모범 사례로 새 CA 인증서를 제공합니다. 새 인증서 및 지원되는 AWS 리전에 대한 자세한 내용은 SSL/TLS를 사용하여 DB 인스턴스에 대한 연결 암호화 단원을 참조하십시오.

참고

Amazon RDS Proxy 에서는 AWS Certificate Manager(ACM)의 인증서를 사용합니다. RDS Proxy를 사용하는 경우 SSL/TLS 인증서를 교체할 때 RDS Proxy 연결을 사용하는 애플리케이션을 업데이트할 필요가 없습니다. RDS Proxy에서 TLS/SSL을 사용하는 방법에 대한 자세한 내용은 RDS Proxy에서 TLS/SSL 사용 단원을 참조하십시오.

참고

2020년 7월 28일 이전에 생성되었거나 rds-ca-2019 인증서로 업데이트된 DB 인스턴스가 있는 Go 버전 1.15 애플리케이션을 사용하는 경우 인증서를 다시 업데이트해야 합니다. rds-ca-2019를 CA 인증서 식별자로 사용하여 AWS CLI 섹션에 표시된 modify-db-instance 명령을 실행합니다. 이 경우 AWS Management 콘솔을 사용하여 인증서를 업데이트할 수 없습니다. 2020년 7월 28일 이후에 DB 인스턴스를 생성하거나 인증서를 업데이트한 경우에는 아무 조치도 필요하지 않습니다. 자세한 내용은 Go GitHub 문제 #39568를 참조하세요.

DB 인스턴스를 수정하여 CA 인증서 업데이트

다음 단계를 완료하여 CA 인증서를 업데이트하십시오.

DB 인스턴스를 수정하여 CA 인증서를 업데이트하려면

  1. SSL/TLS를 사용하여 DB 인스턴스에 대한 연결 암호화에 설명된 대로 새 SSL/TLS 인증서를 다운로드합니다.

  2. 새 SSL/TLS 인증서를 사용하도록 애플리케이션을 업데이트합니다.

    새 SSL/TLS 인증서를 위해 애플리케이션을 업데이트하는 방법은 애플리케이션에 따라 다릅니다. 애플리케이션 개발자와 함께 애플리케이션의 SSL/TLS 인증서를 업데이트하십시오.

    SSL/TLS 연결을 확인하고 각 DB 엔진의 애플리케이션을 업데이트하는 방법에 대한 자세한 내용은 다음 주제를 참조하십시오.

    Linux 운영 체제의 트러스트 스토어를 업데이트하는 샘플 스크립트는 트러스트 스토어로 인증서를 가져오기 위한 샘플 스크립트 단원을 참조하십시오.

    참고

    인증서 번들에는 이전 및 신규 CA의 인증서가 들어 있으므로 애플리케이션을 안전하게 업그레이드하고 전환 기간에 연결성을 유지할 수 있습니다. AWS Database Migration Service를 사용하여 데이터베이스를 DB 인스턴스로 마이그레이션하는 경우, 연결이 끊기지 않고 마이그레이션이 진행되도록 인증서 번들을 사용하는 것이 좋습니다.

  3. DB 인스턴스를 수정하여 CA를 rds-ca-2015에서 rds-ca-2019로 변경합니다.

    중요

    이 작업을 수행하면 기본적으로 DB 인스턴스가 재시작됩니다. 이 작업 중에 DB 인스턴스를 재시작하지 않으려면 modify-db-instance CLI 명령을 사용하여 --no-certificate-rotation-restart 옵션을 지정하면 됩니다.

    이 옵션은 계획된 유지 관리 또는 계획되지 않은 유지 관리에 대해 다음에 데이터베이스를 다시 시작할 때까지 인증서를 교체하지 않습니다. 이 옵션은 SSL/TLS를 사용하지 않는 경우에만 권장됩니다.

    인증서 만료 후 연결 문제가 발생하는 경우 콘솔에서 즉시 적용을 지정하거나 AWS CLI를 통해 --apply-immediately 옵션을 지정하여 즉시 적용 옵션을 사용합니다. 기본적으로 이 작업은 다음 유지 관리 기간 중에 실행되도록 예약되어 있습니다.

AWS Management 콘솔 또는 AWS CLI를 사용하여 DB 인스턴스의 CA 인증서를 rds-ca-2015에서 rds-ca-2019로 변경할 수 있습니다.

DB 인스턴스의 CA를 rds-ca-2015에서 rds-ca-2019로 변경하려면

  1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

  3. 수정을 선택합니다.

    
                                        DB 인스턴스 수정

    [Modify DB Instance] 페이지가 나타납니다.

  4. 네트워크 및 보안 섹션에서 rds-ca-2019를 선택합니다.

    
                                        CA 인증서 선택
  5. [Continue]를 수정 사항을 요약한 내용을 확인합니다.

  6. 변경 사항을 즉시 적용하려면 즉시 적용을 선택합니다.

    중요

    이 옵션을 선택하면 데이터베이스가 즉시 다시 시작됩니다.

  7. 확인 페이지에서 변경 내용을 검토합니다. 변경 내용이 정확할 경우 [Modify DB Instance]를 선택하여 변경 내용을 저장합니다.

    중요

    이 작업을 예약하는 경우 클라이언트 측 트러스트 스토어를 미리 업데이트했는지 확인하십시오.

    또는 뒤로를 선택하여 변경 내용을 편집하거나 취소를 선택하여 변경 내용을 취소합니다.

AWS CLI를 사용하여 DB 인스턴스의 CA를 rds-ca-2015에서 rds-ca-2019로 변경하려면 modify-db-instance 명령을 호출하십시오. DB 인스턴스 식별자 및 --ca-certificate-identifier 옵션을 지정하십시오.

중요

이 작업을 예약하는 경우 클라이언트 측 트러스트 스토어를 미리 업데이트했는지 확인하십시오.

다음 코드에서는 CA 인증서를 rds-ca-2019로 설정하여 mydbinstance를 수정합니다. 변경 사항은 --no-apply-immediately를 사용하여 다음 유지 관리 기간에 적용됩니다. 변경 사항을 바로 적용하려면 --apply-immediately를 사용합니다.

중요

이 작업을 수행하면 기본적으로 DB 인스턴스가 재부팅됩니다. 이 작업 중에 DB 인스턴스를 재부팅하지 않으려면 modify-db-instance CLI 명령을 사용하여 --no-certificate-rotation-restart 옵션을 지정할 수 있습니다.

이 옵션은 계획된 유지 관리 또는 계획되지 않은 유지 관리에 대해 다음에 데이터베이스를 다시 시작할 때까지 인증서를 교체하지 않습니다. 이 옵션은 SSL/TLS를 사용하지 않는 경우에만 권장됩니다.

--apply-immediately를 사용하여 업데이트를 즉시 적용합니다. 기본적으로 이 작업은 다음 유지 관리 기간 중에 실행되도록 예약되어 있습니다.

Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --ca-certificate-identifier rds-ca-2019 \ --no-apply-immediately

Windows의 경우:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --ca-certificate-identifier rds-ca-2019 ^ --no-apply-immediately

DB 인스턴스 유지 관리를 적용하여 CA 인증서 업데이트

DB 인스턴스 유지 관리를 적용하여 CA 인증서를 업데이트하려면 다음 단계를 수행합니다.

DB 인스턴스 유지 관리를 적용하여 CA 인증서를 업데이트하려면

  1. SSL/TLS를 사용하여 DB 인스턴스에 대한 연결 암호화에 설명된 대로 새 SSL/TLS 인증서를 다운로드합니다.

  2. 새 SSL/TLS 인증서를 사용하도록 데이터베이스 애플리케이션을 업데이트합니다.

    새 SSL/TLS 인증서를 위해 애플리케이션을 업데이트하는 방법은 애플리케이션에 따라 다릅니다. 애플리케이션 개발자와 함께 애플리케이션의 SSL/TLS 인증서를 업데이트하십시오.

    SSL/TLS 연결을 확인하고 각 DB 엔진의 애플리케이션을 업데이트하는 방법에 대한 자세한 내용은 다음 주제를 참조하십시오.

    Linux 운영 체제의 트러스트 스토어를 업데이트하는 샘플 스크립트는 트러스트 스토어로 인증서를 가져오기 위한 샘플 스크립트 단원을 참조하십시오.

    참고

    인증서 번들에는 이전 및 신규 CA의 인증서가 들어 있으므로 애플리케이션을 안전하게 업그레이드하고 전환 기간에 연결성을 유지할 수 있습니다.

  3. DB 인스턴스 유지 관리를 적용하여 CA를 rds-ca-2015에서 rds-ca-2019로 변경합니다.

    중요

    변경 사항을 즉시 적용하도록 선택할 수 있습니다. 기본적으로 이 작업은 다음 유지 관리 기간 중에 실행되도록 예약되어 있습니다.

AWS Management 콘솔을 사용하면 DB 인스턴스 유지 관리를 적용하여 여러 DB 인스턴스에 대한 CA 인증서를 rds-ca-2015에서 rds-ca-2019로 변경할 수 있습니다.

여러 DB 인스턴스에 유지 관리를 적용하여 CA 인증서 업데이트

AWS Management 콘솔을 사용하여 여러 DB 인스턴스에 대한 CA 인증서를 변경합니다.

여러 DB 인스턴스에 대한 CA를 rds-ca-2015에서 rds-ca-2019로 변경하려면

  1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택합니다.

    탐색 창에는 영향을 받는 DB 인스턴스의 총 수를 보여 주는 Certificate update(인증서 업데이트) 옵션이 있습니다.

    
                                    인증서 교체 탐색 창 옵션

    탐색 창에서 Certificate update(인증서 업데이트)를 선택합니다.

    Update your Amazon RDS SSL/TLS certificates(Amazon RDS SSL/TLS 인증서 업데이트) 페이지가 나타납니다.

    
                                    여러 DB 인스턴스에 대한 CA 인증서 업데이트
    참고

    이 페이지에는 현재 AWS 리전의 DB 인스턴스만 표시됩니다. 둘 이상의 AWS 리전에 DB 인스턴스가 있는 경우 각 AWS 리전에서 이 페이지를 확인하여 이전 SSL/TLS 인증서가 있는 모든 DB 인스턴스를 확인합니다.

  3. 업데이트할 DB 인스턴스를 선택합니다.

    Update at the next maintenance window(다음 유지 관리 기간에 업데이트)를 선택하여 다음 유지 관리 기간에 인증서 교체를 예약할 수 있습니다. Update now(지금 업데이트)를 선택하여 즉시 교체를 적용합니다.

    중요

    CA 인증서가 교체되면 이 작업은 DB 인스턴스를 재시작합니다.

    인증서 만료 후 연결 문제가 발생하면 Update now(지금 업데이트) 옵션을 사용합니다.

  4. Update at the next maintenance window(다음 유지 관리 기간에 업데이트) 또는 Update now(지금 업데이트)를 선택하면 CA 인증서 교체를 확인하라는 메시지가 표시됩니다.

    중요

    데이터베이스에서 CA 인증서 교체를 예약하기 전에 SSL/TLS 및 서버 인증서를 사용하여 연결하는 모든 클라이언트 애플리케이션을 업데이트합니다. 이러한 업데이트는 DB 엔진에만 적용됩니다. 애플리케이션이 SSL/TLS 및 서버 인증서를 사용하여 연결하는지 확인하려면 2단계: 새 SSL/TLS 인증서를 사용하도록 데이터베이스 애플리케이션을 업데이트 단원을 참조하십시오. 이러한 클라이언트 애플리케이션을 업데이트한 후 CA 인증서 교체를 확인할 수 있습니다.

    
                                    인증서 교체 확인

    계속하려면 확인란을 선택한 다음 확인선택합니다.

  5. 업데이트할 각 DB 인스턴스에 대해 3단계와 4단계를 반복합니다.

트러스트 스토어로 인증서를 가져오기 위한 샘플 스크립트

다음은 인증서 번들을 트러스트 스토어로 가져오는 샘플 셸 스크립트입니다.

Linux에서 인증서를 가져오기 위한 샘플 스크립트

다음은 Linux 운영 체제에서 트러스트 스토어로 인증서 번들을 가져오는 샘플 셸 스크립트입니다.

mydir=tmp/certs if [ ! -e "${mydir}" ] then mkdir -p "${mydir}" fi truststore=${mydir}/rds-truststore.jks storepassword=changeit curl -sS "https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem" > ${mydir}/rds-combined-ca-bundle.pem awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n ".pem"}' < ${mydir}/rds-combined-ca-bundle.pem for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print') echo "Importing $alias" keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt rm $CERT done rm ${mydir}/rds-combined-ca-bundle.pem echo "Trust store content is: " keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'` echo " Certificate ${alias} expires in '$expiry'" done

macOS에서 인증서를 가져오기 위한 샘플 스크립트

다음은 macOS에서 트러스트 스토어로 인증서 번들을 가져오는 샘플 셸 스크립트입니다.

mydir=tmp/certs if [ ! -e "${mydir}" ] then mkdir -p "${mydir}" fi truststore=${mydir}/rds-truststore.jks storepassword=changeit curl -sS "https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem" > ${mydir}/rds-combined-ca-bundle.pem split -p "-----BEGIN CERTIFICATE-----" ${mydir}/rds-combined-ca-bundle.pem rds-ca- for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print') echo "Importing $alias" keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt rm $CERT done rm ${mydir}/rds-combined-ca-bundle.pem echo "Trust store content is: " keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'` echo " Certificate ${alias} expires in '$expiry'" done