3. 구성단계
• (준비)Step1. S3 Bucket 생성
• (준비) Step2. CF Origin Access Identity 생성
• (준비) Step3. CF Distribution 생성
• 검증
• (준비) Step4. CF Key Pair 생성
• (준비) Step5. DER 파일 생성
• (통제) Step6. Signed URL 생성
• 검증
5. Step2. CF Origin Access Identity 생성
CF에서 Origin(여기서는 S3)에 접속할 ID 생성
6. Step3. CF Distribution 생성
Distribution 생성시 Step2.에서 생성된
OAI로만 접속 가능하도록 S3 Bucket Policy
업데이트 설정
-Signature로 검증된 URL만 접속허용
-Owner 소유의 Private Key를 사용하여
만들어진 Signature만 허용
8. Step4. CF Key Pair 생성
CF를 위한 Signed URL 생성을 위한 Key-Pair 생성
9. Step5. Step5. DER 파일 생성
• openssl pkcs8 -topk8 -nocrypt -in $private_key
-inform PEM -out mykey.der -outform DER
Private Key 파일 타입 변경
(openssl 설치 필요)
10. Step6. Signed URL 생성
private static String DistributionDomain = “….cloudfront.net";
private static String KeyPairId = “….";
public static void main(String[] args)
throws CloudFrontServiceException, ParseException, FileNotFoundException, IOException {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
byte[] derPrivateKey = IOUtils.toByteArray(new FileInputStream("./mykey.der"));
String s3ObjectKey = "a.pdf";
String signedUrlCanned = CloudFrontService.signUrlCanned(
"http://"+ DistributionDomain + "/" + s3ObjectKey, KeyPairId,
derPrivateKey,
ServiceUtils.parseIso8601Date("2014-03-13T16:00:00.000Z+09"));
System.out.println(signedUrlCanned);
}
Signed Url 생성 코드 샘플