Amazon Web Services 한국 블로그
2024년에 만료되는 Amazon RDS 및 Amazon Aurora용 SSL/TLS 인증서 지금 교체하세요!
Amazon Relational Database Service(RDS) 콘솔에 인증서 업데이트가 표시되더라도 놀라지 마세요.
Amazon RDS for MySQL, MariaDB, SQL Server, Oracle, PostgreSQL 및 Amazon Aurora의 데이터베이스 인스턴스에 연결할 때 인증서 확인과 함께 보안 소켓 계층(SSL) 또는 전송 계층 보안(TLS)을 사용하고 있거나 사용할 계획이라면 루트 인증서가 만료되기 전에 DB 인스턴스와 애플리케이션 모두에서 새 인증 기관(CA) 인증서를 교체해야 합니다.
DB 인스턴스에 대한 대부분의 SSL/TLS 인증서(rds-ca-2019
)는 2020년의 인증서 업데이트 후 2024년에 만료됩니다. 2022년 12월에 AWS는 40년(rds-ca-rsa2048-g1
) 및 100년(rds-ca-rsa4096-g1
과 rds-ca-ecc384-g1
)간 유효한 새 CA 인증서를 릴리스했습니다. 따라서 CA 인증서를 교체하면 오랫동안 다시 교체할 필요가 없습니다.
다음은 영향을 받는 리전 목록과 rds-ca-2019
의 만료 날짜입니다.
만료 날짜 | 리전 |
2024년 5월 8일 | 중동(바레인) |
2024년 8월 22일 | 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(캘리포니아 북부), 미국 서부(오레곤), 아시아 태평양(뭄바이), 아시아 태평양(오사카), 아시아 태평양(서울), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄), 캐나다(중부), 유럽(프랑크푸르트), 유럽(아일랜드), 유럽(런던), 유럽(파리), 유럽(스톡홀름), 남아메리카(상파울루) |
2024년 9월 9일 | 중국(베이징), 중국(닝샤) |
2024년 10월 26일 | 아프리카(케이프타운) |
2024년 10월 28일 | 유럽(밀라노) |
2061년까지 영향을 받지 않음 | 아시아 태평양(홍콩), 아시아 태평양(하이데라바드), 아시아 태평양(자카르타), 아시아 태평양(멜버른), 유럽(스페인), 유럽(취리히), 이스라엘(텔아비브), 중동(UAE), AWS GovCloud(미국 동부), AWS GovCloud(미국 서부) |
다음 단계는 인증서를 교체하여 애플리케이션과 데이터베이스 인스턴스 사이의 연결을 유지하는 방법을 보여줍니다.
1단계 – 영향을 받는 Amazon RDS 리소스 식별하기
앞서 말했듯이 Amazon RDS 콘솔의 인증서 업데이트 페이지에서 영향을 받는 DB 인스턴스의 총 수를 식별하고 영향을 받는 모든 DB 인스턴스를 확인할 수 있습니다. 참고: 이 페이지에는 현재 리전의 DB 인스턴스만 표시됩니다. 2개 이상의 리전에 DB 인스턴스가 있는 경우 각 리전의 인증서 업데이트 페이지를 확인하여 이전 SSL/TLS 인증서가 있는 모든 DB 인스턴스를 확인하세요.
AWS Command Line Interface(AWS CLI)에서 describe-db-instances
를 직접적으로 호출하여 만료 예정 CA가 사용되는 인스턴스를 찾을 수도 있습니다. 쿼리를 실행하면 해당 계정과 us-east-1
리전의 RDS 인스턴스 목록이 표시됩니다.
$ aws rds describe-db-instances --region us-east-1 |
jq -r '.DBInstances[] |
select ((.CACertificateIdentifier != "rds-ca-rsa2048-g1") and
(.CACertificateIdentifier != "rds-ca-rsa4096-g1") and
(.CACertificateIdentifier != "rds-ca-ecc384-g1")) |
"DBInstanceIdentifier:
(.DBInstanceIdentifier), CACertificateIdentifier:
(.CACertificateIdentifier)"'
2단계 – 데이터베이스 클라이언트 및 애플리케이션 업데이트
DB 인스턴스에 새 인증서를 적용하기 전에 SSL 및 TLS와 서버 인증서를 연결에 사용하는 모든 클라이언트 및 애플리케이션의 트러스트 스토어를 업데이트해야 합니다. 현재 DB 인스턴스 자체에서 애플리케이션의 연결 사전 조건으로 인증서 확인이 필요한지 여부를 쉽게 확인할 수 있는 방법은 없습니다. 유일한 옵션은 애플리케이션의 소스 코드 또는 구성 파일을 검사하는 것입니다.
DB 엔진별 설명서에 가장 일반적인 데이터베이스 연결 인터페이스에서 확인해야 할 사항이 설명되어 있지만, 애플리케이션 개발자와 협력하여 인증서 확인이 사용되는지 여부와 특정 애플리케이션에 대한 클라이언트 애플리케이션의 SSL 및 TLS 인증서를 업데이트하는 올바른 방법을 결정하는 것이 좋습니다.
애플리케이션의 인증서를 업데이트하려면 이전 CA와 새 CA에 대한 인증서가 모두 포함된 새 인증서 번들을 사용하여 전환 기간에 애플리케이션을 안전하게 업그레이드하고 연결을 유지할 수 있습니다.
SSL및 TLS 연결 확인과 각 DB 엔진의 애플리케이션 업데이트에 대한 자세한 내용은 다음 주제를 참조하세요.
- 새 SSL/TLS 인증서를 사용해 MariaDB 인스턴스에 연결할 애플리케이션 업데이트
- 새 SSL/TLS 인증서를 사용해 Microsoft SQL Server DB 인스턴스에 연결할 애플리케이션을 업데이트
- 새 SSL/TLS 인증서를 사용해 MySQL DB 인스턴스에 연결할 애플리케이션 업데이트
- 새 SSL/TLS 인증서를 사용해 Oracle DB에 연결할 애플리케이션을 업데이트
- 새 SSL/TLS 인증서를 사용해 PostgreSQL DB 인스턴스에 연결할 애플리케이션 업데이트
- 새 TLS 인증서를 사용하여 Aurora MySQL DB 클러스터에 연결할 애플리케이션 업데이트
- 새 SSL/TLS 인증서를 사용해 Aurora PostgreSQL DB 클러스터에 연결할 애플리케이션 업데이트
3단계 – 비프로덕션 RDS 인스턴스에서 CA 교체 테스트
모든 트러스트 스토어에서 새 인증서를 업데이트한 경우 비프로덕션 환경의 RDS 인스턴스로 테스트해야 합니다. 프로덕션 환경과 동일한 데이터베이스 엔진 및 버전을 사용하는 개발 환경에서 이 설정을 수행하세요. 또한 프로덕션과 동일한 코드 및 구성으로 이 테스트 환경을 배포해야 합니다.
테스트 데이터베이스 인스턴스에서 새 인증서를 교체하려면 Amazon RDS 콘솔에서 수정하려는 DB 인스턴스에 대해 수정을 선택합니다.
연결 섹션에서 rds-ca-rsa2048-g1
을 선택합니다.
계속을 선택하여 수정 요약을 확인합니다. 변경 내용을 즉시 적용하려면 즉시 적용을 선택합니다.
AWS CLI를 사용하여 rds-ca-2019
에서 rds-ca-rsa2048-g1
로 DB 인스턴스의 CA를 변경하려면 modify-db-instance
명령을 직접 호출하고 --ca-certificate-identifier
옵션을 사용하여 DB 인스턴스 식별자를 지정합니다.
$ aws rds modify-db-instance \
--db-instance-identifier <mydbinstance> \
--ca-certificate-identifier rds-ca-rsa2048-g1 \
--apply-immediately
이 방법은 프로덕션 데이터베이스 인스턴스에서 새 인증서를 수동으로 교체할 때와 같은 방법입니다. 참조한 트러스트 스토어 또는 CA 인증서 번들을 사용하여 교체 후에 애플리케이션이 SSL및 TLS를 사용하여 문제 없이 다시 연결되는지 확인하세요.
새 DB 인스턴스를 생성할 때 기본 CA는 2024년 1월 25일까지 여전히 rds-ca-2019
이고, 그 이후에는 rds-ca-rsa2048-g1
로 변경됩니다. 새 DB 인스턴스를 생성하기 위한 새 CA를 설정하려면 CA 재정의를 설정하여 모든 새 인스턴스를 시작할 때 선택한 CA가 사용되도록 할 수 있습니다.
$ aws rds modify-certificates \
--certificate-identifier rds-ca-rsa2048-g1 \
--region <region name>
RDS DB 인스턴스가 있는 모든 리전에서 이 작업을 수행해야 합니다.
4단계 – 프로덕션 RDS 인스턴스를 안전하게 업데이트
비프로덕션 환경에서 테스트를 완료한 후 프로덕션 환경에서 RDS 데이터베이스 CA 인증서 교체를 시작할 수 있습니다. 3단계에 나와 있는 것처럼 DB 인스턴스를 수동으로 교체할 수 있습니다. 참고로 최신 엔진 중 상당수는 다시 시작을 필요로 하지 않지만, 그래도 유지 관리 기간에 일정을 잡는 것이 좋습니다.
1단계의 인증서 업데이트 페이지에서 교체하려는 DB 인스턴스를 선택합니다. 일정을 선택하면 다음 유지 관리 기간에 인증서 교체를 예약할 수 있습니다. 지금 적용을 선택하면 교체를 즉시 적용할 수 있습니다.
일정을 선택하면 인증서 교체를 확인하라는 메시지가 표시됩니다. 예약된 업데이트 기간도 이 메시지에 표시됩니다.
인증서가 업데이트된 후(즉시 또는 유지 관리 기간 중에) 데이터베이스와 애플리케이션이 예상대로 계속 작동하는지 확인해야 합니다.
대부분의 최신 DB 엔진은 인증서를 업데이트하기 위해 데이터베이스를 다시 시작할 필요가 없습니다. CA 업데이트만을 위해 데이터베이스를 다시 시작하지 않으려면 modify-db-instance
명령에서 --no-certificate-rotation-restart
플래그를 사용하면 됩니다.
$ aws rds modify-db-instance \
--db-instance-identifier <mydbinstance> \
--ca-certificate-identifier rds-ca-rsa2048-g1 \
--no-certificate-rotation-restart
엔진에서 다시 시작이 필요한지 확인하려면 describe-db-engine-versions
명령의 출력에서 SupportsCertificateRotationWithoutRestart
필드를 확인하면 됩니다. 다음 명령을 사용하여 재시작 없는 교체를 지원하는 엔진을 확인할 수 있습니다.
$ aws rds describe-db-engine-versions \
--engine <engine> --include-all --region <region> |
jq -r '.DBEngineVersions[] |
"EngineName: (.Engine),
EngineVersion: (.EngineVersion),
SupportsCertificateRotationWithoutRestart: (.SupportsCertificateRotationWithoutRestart),
SupportedCAs: ([.SupportedCACertificateIdentifiers |
join(", ")])"'
데이터베이스 인스턴스에 SSL및 TLS를 사용하지 않더라도 CA를 교체하는 것이 좋습니다. 향후에 SSL 및 TLS를 사용해야 할 수 있고, JDBC 및 ODBC 커넥터와 같은 일부 데이터베이스 커넥터는 연결하기 전에 유효한 인증서를 확인하는데 만료된 CA를 사용하면 연결하지 못할 수 있습니다.
DB 인스턴스를 수동으로 수정하여 인증서를 업데이트하는 방법, 서버 인증서의 자동 교체, 인증서를 트러스트 스토어로 가져오기 위한 샘플 스크립트를 찾는 방법에 대해 알아보려면 Amazon RDS 사용 설명서 또는 Amazon Aurora 사용 설명서를 참조하세요.
주요 사항
다음은 알아두어야 할 몇 가지 주요 사항입니다.
- Amazon RDS 프록시와 Amazon Aurora Serverless는 AWS Certificate Manager(ACM)의 인증서를 사용합니다. SSL 및 TLS 인증서를 교체할 때 Amazon RDS 프록시를 사용하는 경우 Amazon RDS 프록시 연결을 사용하는 애플리케이션을 업데이트할 필요가 없습니다. Aurora Serverless를 사용하는 경우 SSL및 TLS 인증서를 교체할 필요가 없습니다.
- 지금부터 2024년 1월 25일까지는
create-db-instance
API에서ca-certificate-identifier
옵션을 통해 다른 CA를 지정하거나 위 섹션에서 언급한 것처럼 계정의 기본 CA 재정의를 지정하지 않는 한, 새 RDS DB 인스턴스에 기본적으로rds-ca-2019
인증서가 사용됩니다. 2024년 1월 26일부터는 모든 새 데이터베이스 인스턴스에 기본적으로rds-ca-rsa2048-g1
인증서가 사용됩니다. 새 인스턴스에 다른 인증서를 사용하려는 경우 AWS Console 또는 AWS CLI를 통해 사용할 인증서를 지정할 수 있습니다. 자세한 내용은create-db-instance
API 설명서를 참조하세요. - Amazon RDS for SQL Server를 제외하고, 대부분의 현대적 RDS 및 Aurora 엔진의 최신 버전은 데이터베이스 재시작 없는 인증서 교체를 지원합니다.
describe-db-engine-versions
를 직접적으로 호출하고 응답 필드SupportsCertificateRotationWithoutRestart
를 확인하세요. 이 필드가true
로 설정되어 있으면 CA 업데이트를 위해 인스턴스에서 데이터베이스를 다시 시작하지 않아도 됩니다.false
로 설정되어 있으면 다시 시작이 필요합니다. 자세한 내용은 AWS 설명서에서 데이터베이스의 CA 설정을 참조하세요. - 교체된 CA는 각 DB 인스턴스에 설치되는 DB 서버 인증서를 서명합니다. DB 서버 인증서는 DB 인스턴스를 신뢰할 수 있는 서버로 식별합니다. DB 서버 인증서의 유효 기간은 DB 엔진 및 버전에 따라 1년 또는 3년으로 다릅니다. CA가 자동 서버 인증서 교체를 지원하는 경우 RDS도 DB 서버 인증서 교체를 자동으로 처리합니다. DB 서버 인증서 교체에 대한 자세한 내용은 AWS 설명서에서 자동 서버 인증서 교체를 참조하세요.
- 40년 유효 인증서(
rds-ca-rsa2048-g1
) 또는 100년 인증서 중에서 선택할 수 있습니다. RDS 인스턴스에 사용되는 만료 예정 CA는 RSA2048 키 알고리즘과 SHA256 서명 알고리즘을 사용합니다.rds-ca-rsa2048-g1
은 정확히 동일한 구성을 사용하므로 호환성 면에서 가장 적합합니다. 100년 인증서(rds-ca-rsa4096-g1
및rds-ca-ecc384-g1
)는rds-ca-rsa2048-g1
보다 더 안전한 암호화 체계를 사용합니다. 이를 사용하려면 사전 프로덕션 환경에서 잘 테스트하여 데이터베이스 클라이언트와 서버가 해당 리전에서 필요한 암호화 체계를 지원하는지 다시 확인해야 합니다.
지금 교체하기!
인증서 만료일까지 1년이 남았더라도 팀과 함께 계획을 시작해야 합니다. SSL및 TLS 인증서를 업데이트하려면 만료일 전에 DB 인스턴스를 다시 시작해야 할 수 있습니다. 만료일 이전에 애플리케이션 업데이트를 예약하고, 프로덕션 환경에서 이러한 단계를 완료하기 전에 스테이징 또는 사전 프로덕션 데이터베이스 환경에서 테스트를 실행하는 것이 좋습니다. SSL 및 TLS 인증서 업데이트에 대한 자세한 내용은 Amazon RDS 사용 설명서 및 Amazon Aurora 사용 설명서를 참조하세요.
SSL 및 TLS 연결을 사용하지 않고 있다면, SSL 및 TLS 연결을 사용하고 연결 인증 프로세스의 일부로 인증서 확인을 요청하는 것이 데이터베이스 보안 모범 사례임을 참고하세요. SSL 및 TLS를 사용하여 DB 인스턴스에 대한 연결을 암호화하는 방법에 대해 자세히 알아보려면 Amazon RDS 사용 설명서 및 Amazon Aurora 사용 설명서를 참조하세요.
질문이나 문제가 있는 경우 지원 플랜의 일반 AWS Support에 문의하세요.
— Channy