Https 연결 사용 시 서버 인증서가 필요합니다. 서버 인증서는 CA에서 서명한 x.509 v3 데이터 구조입니다.
서버 인증서에는 서버 이름, 유효 기간, 퍼블릭 키 및 기타 데이터가 포함됩니다.
브라우저가 웹 서버에 액세스하는 경우 모든 데이터 필드가 유효해야 합니다.
인증서가 만료되었거나 아래와 같이 인증서가 도메인에 대해 유효하지 않은 경우 ACM(AWS Certificate Manager) 인증서 오류 메시지가 표시됩니다.
서버의 보안 인증서가 *.s3.ap-northeast-2.amazonaws.com 에 대해 제공을 하는데, wildcard name (*)을 사용하면 하나의 하위 도메인과만 일치하기 때문에 https://moonsiri.s3.ap-northeast-2.amazonaws.com/ 은 보호하지만, https://moonsiri.com.s3.ap-northeast-2.amazonaws.com/ 은 보호할 수 없습니다.
위 문제를 JAVA에서 AmazonS3Client 구성 시 enablePathStyleAccess 설정을 통해 해결할 수 있습니다.
enablePathStyleAccess() 를 설정하면 모든 요청에 path-style 액세스가 사용됩니다.
@Configuration
public class AwsS3Configuration {
/* V1 */
@Bean
public AmazonS3 amazonS3Client() {
return AmazonS3ClientBuilder.standard()
.withRegion(regions)
.enablePathStyleAccess() // 빌드 된 클라이언트에 대한 path-style 액세스 사용
.build();
}
/* V2 */
@Bean
public S3AsyncClient amazonS3Client() {
S3Configuration config = S3Configuration.builder().pathStyleAccessEnabled(true).build(); // 빌드 된 클라이언트에 대한 path-style 액세스 사용
return S3AsyncClient.builder()
.region(region)
.serviceConfiguration(config)
.build();
}
}
이전에 Amazon S3는 모든 리전에서 virtual hosted-style(가상 호스팅 방식)과 path-style(경로 스타일 방식) 액세스를 지원했습니다.
※ 참고) 2020년 9월 30일 이후에 생성되는 버킷은 virtual hosted-style 요청만 지원합니다. 해당일 또는 이전에 생성된 버킷에 대해서는 path-style 방식이 계속 지원됩니다. 자세한 내용은 Amazon S3 홈페이지를 참조.
path-style URL은 다음 형식을 따릅니다.
- https://s3.Region.amazonaws.com/bucket-name/key name
예를 들어 미국 서부(오레곤) 리전에서 이름이 moonsiri인 버킷을 생성하고 해당 버킷의 sample.jpg 객체에 액세스하려는 경우 다음 path-style URL을 사용할 수 있습니다.
- https://s3.us-west-2.amazonaws.com/moonsiri/sample.jpg
하지만, path-style 구문에서 버킷에 액세스할 때 region-specific 엔드 포인트를 사용해야 합니다.
기본 동작은 구성된 엔드 포인트 (IP로 인해 path-style 액세스가 발생) 및 버킷이 액세스 되는 버킷(일부 버킷은 유효한 DNS 명이 아님)을 기반으로 사용할 액세스 style을 감지하는 것입니다.
즉, https://moonsiri.com.s3.ap-northeast-2.amazonaws.com 도메인이 https://s3.ap-northeast-2.amazonaws.com 으로 변경되어 서버의 보안 인증서가 도메인에 대해 유효해집니다.
기타 문제는 아래 URL을 통해 해결하길 바랍니다.
https://aws.amazon.com/premiumsupport/knowledge-center/acm-certificate-error-https/
'infra > aws' 카테고리의 다른 글
[AWS SDK for JAVA] S3 버전 1.x에서 2.x로 마이그레이션 (0) | 2024.06.04 |
---|---|
[AWS SDK for JAVA] SES 버전 1.x에서 2.x로 마이그레이션 (0) | 2024.06.04 |
[AWS SDK for JAVA] EC2 보안그룹(Security Group) 조회 (0) | 2023.06.21 |
[CloudFront] JA3 TLS Client Fingerprint (0) | 2023.04.19 |
Java Mail API로 Amazon SES 반송 이메일 세부 정보 읽기 (1) | 2021.04.07 |
댓글