# Root CA 인증서 설치 가이드

팝빌 API 호출 시 SSL 인증서 관련 오류가 발생한다면 Amazon Root CA 인증서가 설치되어 있지 않을 수 있습니다.\
운영환경에 맞는 설치 방법을 확인하고, 통신테스트를 통해 정상 연결 여부를 점검해 주시기 바랍니다.

## JAVA 인증서 설치 방법

1. keytool 명령어를 사용하여 G2 인증서의 설치 여부를 확인합니다.

   ```bash
   keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts | grep "Amazon Root CA"
   ```

2. 정상적으로 설치가 완료되었다면 아래와 같이 소유자, 발급자 정보를 확인할 수 있습니다.

   ```txt
   소유자: CN=Amazon Root CA 4, O=Amazon, C=US
   발행자: CN=Amazon Root CA 4, O=Amazon, C=US
   소유자: CN=Amazon Root CA 3, O=Amazon, C=US
   발행자: CN=Amazon Root CA 3, O=Amazon, C=US
   소유자: CN=Amazon Root CA 2, O=Amazon, C=US
   발행자: CN=Amazon Root CA 2, O=Amazon, C=US
   소유자: CN=Amazon Root CA 1, O=Amazon, C=US
   발행자: CN=Amazon Root CA 1, O=Amazon, C=US
   ```

   > **소유자, 발급자 정보가 확인되지 않는 경우**
   >
   > - JDK 1.8.0\_361 이상 버전으로 업데이트가 필요합니다.
   > - JDK 버전을 업데이트할 수 없는 경우 cacerts에 Amazon Root CA 인증서를 수동으로 등록해야 합니다.

### Amazon Root CA 인증서 수동 설치 방법

1. 인증서 파일을 다운로드 합니다. (https\://www\.amazontrust.com/repository, PEM 파일 다운로드)

   ![인증서 파일 다운로드](https://developers.popbill.com/images/customer-center/rootca/installCert_java.png)

2. keytool 명령어를 사용하여 인증서를 수동으로 등록합니다.

   ```bash
   keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass [changeit] -trustcacerts -alias Amazon_Root_CA_1 -file [루트 인증서 파일위치]/AmazonRootCA1.pem -noprompt


   keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass [changeit] -trustcacerts -alias Amazon_Root_CA_2 -file [루트 인증서 파일위치]/AmazonRootCA2.pem -noprompt


   keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass [changeit] -trustcacerts -alias Amazon_Root_CA_3 -file [루트 인증서 파일위치]/AmazonRootCA3.pem -noprompt


   keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass [changeit] -trustcacerts -alias Amazon_Root_CA_4 -file [루트 인증서 파일위치]/AmazonRootCA4.pem -noprompt
   ```

3. keytool 명령어를 사용하여 인증서의 설치 여부를 확인합니다.

   ```bash
   keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts | grep "Amazon Root CA"
   ```

4. 정상적으로 설치가 완료되었다면 아래와 같이 소유자, 발급자 정보를 확인할 수 있습니다.

   ```txt
   소유자: CN=Amazon Root CA 4, O=Amazon, C=US
   발행자: CN=Amazon Root CA 4, O=Amazon, C=US
   소유자: CN=Amazon Root CA 3, O=Amazon, C=US
   발행자: CN=Amazon Root CA 3, O=Amazon, C=US
   소유자: CN=Amazon Root CA 2, O=Amazon, C=US
   발행자: CN=Amazon Root CA 2, O=Amazon, C=US
   소유자: CN=Amazon Root CA 1, O=Amazon, C=US
   발행자: CN=Amazon Root CA 1, O=Amazon, C=US
   ```

### Java 통신테스트 방법

1. 아래 코드를 복사하여 JavaHttpsExample.java 파일로 저장합니다.

   ```java
   import java.net.URL;
   import java.io.*;
   import javax.net.ssl.HttpsURLConnection;


   public class JavaHttpsExample
   {
       public static void main(String[] args) throws Exception {
           String httpsURL = "https://new-root-test.linkhub.co.kr/";
           // String httpsURL = "https://static-root-test.linkhub.co.kr/";


           URL myUrl = new URL(httpsURL);
           HttpsURLConnection conn = (HttpsURLConnection)myUrl.openConnection();
           InputStream is = conn.getInputStream();
           InputStreamReader isr = new InputStreamReader(is);
           BufferedReader br = new BufferedReader(isr);
           String inputLine;
           while ((inputLine = br.readLine()) != null) {
               System.out.println(inputLine);
           }
           br.close();
       }
   }
   ```

2. 아래의 명령어를 사용하여 저장한 java 파일을 컴파일한 후 실행합니다.

   ```bash
   javac JavaHttpsExample.java
   java -Djavax.net.debug=ssl JavaHttpsExample
   ```

3. 정상적으로 설치가 완료되었다면 아래와 같이 결과를 확인할 수 있습니다.

   ```txt
   Root CA 테스트 성공. [ New Root CA is available. ]
   ```

## 리눅스 인증서 설치 방법

인증서 파일을 다운로드 합니다. (https\://www\.amazontrust.com/repository/)

- RHEL 계열 - PEM, Ubuntu/Debian 계열 - DER

  ![인증서 파일 다운로드](https://developers.popbill.com/images/customer-center/rootca/installCert_linux.png)

### CentOS(RHEL 계열)

- 인증서 경로 : /etc/pki/ca-trust/source/anchors/

- 확장자 : .pem (대체로 가능)

- 명령어 : sudo update-ca-trust extract

  ```bash
  sudo cp AmazonRootCA1.pem /etc/pki/ca-trust/source/anchors/
  sudo cp AmazonRootCA2.pem /etc/pki/ca-trust/source/anchors/
  sudo cp AmazonRootCA3.pem /etc/pki/ca-trust/source/anchors/
  sudo cp AmazonRootCA4.pem /etc/pki/ca-trust/source/anchors/


  sudo update-ca-trust extract
  ```

### Ubuntu/Debian 계열

- 인증서 경로 : /usr/local/share/ca-certificates/

- 확장자 : .cer (필수)

- 명령어 : sudo update-ca-certificates

  ```bash
  sudo cp AmazonRootCA1.cer /usr/local/share/ca-certficates/
  sudo cp AmazonRootCA2.cer /usr/local/share/ca-certficates/
  sudo cp AmazonRootCA3.cer /usr/local/share/ca-certficates/
  sudo cp AmazonRootCA4.cer /usr/local/share/ca-certficates/


  sudo update-ca-certificates
  ```

  > 리눅스는 배포판에 따라 인증서 관리 명령어나 경로가 다르므로, 각 운영환경에 맞는 방식으로 경로 및 명령어를 확인하여 Amazon Root CA 인증서를 추가해주시기 바랍니다.

### curl을 이용한 통신테스트

1. curl 명령어를 사용하여 통신 가능 여부를 확인합니다.

   ```bash
   curl https://new-root-test.linkhub.co.kr
   ```

2. 정상적으로 설치가 완료되었다면 아래와 같이 결과를 확인할 수 있습니다.

   ```txt
   Root CA 테스트 성공. [ New Root CA is available. ]
   ```

## 윈도우 인증서 설치 방법

### 인증서 확인 방법

1. “Win + R” 단축키를 입력하여 실행 창을 열고, “certmgr.msc” 입력 후 “확인” 버튼을 클릭합니다.

   ![인증서 확인 1단계: certmgr.msc 실행](https://developers.popbill.com/images/customer-center/rootca/checkCert1.png)

2. certmgr 에서 “신뢰할수 있는 루트 인증 기관” → “인증서”를 클릭하여 Amazon Root CA 인증서를 확인합니다.

   ![인증서 확인 2단계: Amazon Root CA 인증서 확인](https://developers.popbill.com/images/customer-center/rootca/checkCert2.png)

   ※ 교차서명 인증서인 “Starfield Service Root Certificate Authority – G2”가 존재할 경우 Amazon Root CA 인증서를 설치하지 않아도 통신이 가능합니다.

   ![Starfield Service Root Certificate Authority – G2 존재여부 확인](https://developers.popbill.com/images/customer-center/rootca/checkCert3.png)

### 인증서 설치 방법

1. 인증서 파일을 다운로드 합니다. (https\://www\.amazontrust.com/repository/, DER 파일 다운로드)

   ![인증서 파일 다운로드](https://developers.popbill.com/images/customer-center/rootca/installCert1.png)

2. 다운로드 받은 인증서 파일을 실행합니다.

   ![인증서 파일 실행](https://developers.popbill.com/images/customer-center/rootca/installCert2.png)

3. 인증서 설치 버튼을 클릭합니다.

   ![인증서 설치](https://developers.popbill.com/images/customer-center/rootca/installCert3.png)

4. 인증서 가져오기 마법사에서 인증서 저장소를 선택합니다.

   ![인증서 가져오기](https://developers.popbill.com/images/customer-center/rootca/installCert4.png)

5. 인증서 저장소를 “신뢰할 수 있는 루트 인증 기관”으로 지정하여 저장합니다.

   ![인증서 설치](https://developers.popbill.com/images/customer-center/rootca/installCert5.png)

6. 인증서 가져오기를 완료합니다.

   ![인증서 설치 완료](https://developers.popbill.com/images/customer-center/rootca/installCert6.png)

7. 설치된 인증서가 정상적으로 등록되었는지 확인합니다.

   ![설치된 인증서 확인](https://developers.popbill.com/images/customer-center/rootca/installCert7.png)

### 브라우저를 이용한 통신테스트

팝빌 통신테스트 페이지에 접속하여 통신 가능 여부를 확인합니다.

| 구분                   | 테스트 URL                                 | IP                          |
| -------------------- | --------------------------------------- | --------------------------- |
| Elastic IP End Point | https\://new-root-test.linkhub.co.kr    | -                           |
| Static IP End Point  | https\://static-root-test.linkhub.co.kr | 52.78.164.186 13.124.222.90 |

![브라우저로 페이지에 접근하여 인증서 테스트](https://developers.popbill.com/images/customer-center/rootca/verifyCert.png)

## 참고 URL

Root CA 인증서 다운로드 : Amazon Root CA

- https\://www\.amazontrust.com/repository

## 윈도우 인증서 설치 방법

### 인증서 확인 방법

1. “Win + R” 단축키를 입력하여 실행 창을 열고, “certmgr.msc” 입력 후 “확인” 버튼을 클릭합니다.

   ![인증서 확인 1단계: certmgr.msc 실행](https://developers.popbill.com/images/customer-center/rootca/checkCert1.png)

2. certmgr 에서 “신뢰할수 있는 루트 인증 기관” → “인증서”를 클릭하여 Amazon Root CA 인증서를 확인합니다.

   ![인증서 확인 2단계: Amazon Root CA 인증서 확인](https://developers.popbill.com/images/customer-center/rootca/checkCert2.png)

   ※ 교차서명 인증서인 “Starfield Service Root Certificate Authority – G2”가 존재할 경우 Amazon Root CA 인증서를 설치하지 않아도 통신이 가능합니다.

   ![Starfield Service Root Certificate Authority – G2 존재여부 확인](https://developers.popbill.com/images/customer-center/rootca/checkCert3.png)

### 인증서 설치 방법

1. 인증서 파일을 다운로드 합니다. (https\://www\.amazontrust.com/repository/, DER 파일 다운로드)

   ![인증서 파일 다운로드](https://developers.popbill.com/images/customer-center/rootca/installCert1.png)

2. 다운로드 받은 인증서 파일을 실행합니다.

   ![인증서 파일 실행](https://developers.popbill.com/images/customer-center/rootca/installCert2.png)

3. 인증서 설치 버튼을 클릭합니다.

   ![인증서 설치](https://developers.popbill.com/images/customer-center/rootca/installCert3.png)

4. 인증서 가져오기 마법사에서 인증서 저장소를 선택합니다.

   ![인증서 가져오기](https://developers.popbill.com/images/customer-center/rootca/installCert4.png)

5. 인증서 저장소를 “신뢰할 수 있는 루트 인증 기관”으로 지정하여 저장합니다.

   ![인증서 설치](https://developers.popbill.com/images/customer-center/rootca/installCert5.png)

6. 인증서 가져오기를 완료합니다.

   ![인증서 설치 완료](https://developers.popbill.com/images/customer-center/rootca/installCert6.png)

7. 설치된 인증서가 정상적으로 등록되었는지 확인합니다.

   ![설치된 인증서 확인](https://developers.popbill.com/images/customer-center/rootca/installCert7.png)

### 브라우저를 이용한 통신테스트

팝빌 통신테스트 페이지에 접속하여 통신 가능 여부를 확인합니다.

| 구분                   | 테스트 URL                                 | IP                          |
| -------------------- | --------------------------------------- | --------------------------- |
| Elastic IP End Point | https\://new-root-test.linkhub.co.kr    | -                           |
| Static IP End Point  | https\://static-root-test.linkhub.co.kr | 52.78.164.186 13.124.222.90 |

![브라우저로 페이지에 접근하여 인증서 테스트](https://developers.popbill.com/images/customer-center/rootca/verifyCert.png)

## 참고 URL

Root CA 인증서 다운로드 : Amazon Root CA

- https\://www\.amazontrust.com/repository
