TheKoguryo's 기술 블로그

 Version 2024.04.01

16.1 Load Balancer의 인증서를 OCI Certificate로 관리하기

OCI Certificate는 Load Balancer, API Gateway와의 연동을 지원합니다. Compute 인스턴스 앞에 그림과 같이 OCI Load Balancer를 두고, OCI Certificate 상의 인증서를 통해 관리할 수 있습니다.

OCI Certificate

VCN 구성 및 Backend 웹서버 만들기

10.1 Load Balancer 구성 예시 ~ 10.4 Load Balancer를 위한 Subnet 만들기 을 참고하여 Load Balancer를 구성하기 위한 준비를 합니다.

OCI Certificate 서비스에서 Certificate Authority 만들기

  1. OCI 콘솔에서 내비게이션 메뉴의 Identity & Security > Dynamic Group을 클릭합니다.

  2. CA를 위한 Dynamic Group을 만듭니다.

    • Name: 예시, ca-dynamic-group
    resource.type='certificateauthority'
    
  3. Policy를 만듭니다.

    • Name: 예시, ca-policy
    Allow dynamic-group <YourDynamicGroupName> to use keys in compartment <YourCompartmentName>
    Allow dynamic-group <YourDynamicGroupName> to manage objects in compartment <YourCompartmentName>
    
  4. OCI 콘솔에서 내비게이션 메뉴의 Identity & Security > Vault를 클릭합니다.

  5. 새 Vault를 만듭니다.

    • Name: 예시, my-vault
  6. 만들어진 Vault로 이동합니다.

  7. 새 Master Encryption Key를 만듭니다.

    • OCI Certificate에서 사용하기 위해서는 HSM 모드로, 비대칭 키(여기서는 RSA 기반 키)를 만듭니다.

    • Only HSM asymmetric key is allowed

      image-20230329230749312

  8. OCI 콘솔에서 내비게이션 메뉴의 Identity & Security > Certificate > Certificate Authorities를 클릭합니다.

  9. Create Certificate Authority를 클릭합니다.

  10. Certificate Authority 생성 정보를 입력합니다.

    • 기본 정보

      • CA 타입: Root Certificate Authority
      • Name: 예시, my-oci-root-ca
    • Subject Information

      • Common Name: 예시, My OCI Root CA
    • Authority Configuration

      • 앞서 만든 Vault의 Master Encryption Key를 선택합니다.

        image-20230329231208243

    • Expire Rule

      • Maximum Validity Duration for Certificates (Days): 하위 인증서의 최대 유효 기간으로 원하는 값으로 변경합니다. 예, 365
    • Revocation Configuration

      • Skip Revocation을 체크합니다.
    • Summary

      • 설정 내용 확인후 CA를 만듭니다.

        image-20230329235246932

OCI Certificate 만들기

  1. 앞서 만든 CA 화면으로 이동합니다.

  2. Resources > Certificates에서 Issue Certificate을 클릭합니다.

  3. Certificate 생성 정보를 입력합니다.

    • 기본 정보

      • CA 타입: Issued by internal CA

      • Name: 예시, web.example.com

      • Subject Information

        • Common Name:

          • 예시, web.example.com
        • Subject Alternative Names

          • DNS Name: HTTPS로 접속시 사용할 주소명을 입력합니다.
            • 예시, web.example.com
          • 필요하면, 접속시 사용할 DNS Name 또는 LB의 고정 IP를 IP Address 더 추가합니다.
      • Certificate Configuration

        • 나머지는 기본설정 그대로 사용
      • Rules

        • 그대로 사용
      • Summary

        • 설정 내용 확인후 Certificate를 만듭니다.

        image-20230329235713842

    • “The validity period 7838778727 exceeds the maximum validity period allowed 7776000000.“과 같은 오류가 발생시 만료 날짜(Not Valid After)를 앞당겨 설정합니다.

Load Balancer 만들기

10.5 Load Balancer 만들기 을 참고하여 Load Balancer를 구성하기 위한 준비를 합니다.

  1. Configure Listener

    • Listener Name:

      • 이름 입력, 예) ExampleLB-Listener
    • Specify the type of traffic your listener handles: HTTPS 선택

      • OCI Certificate의 SSL 인증서 연동을 테스트하기 위해 HTTPS를 선택합니다.
    • SSL certificate

      • OCI Certificate 서비스 선택
      • 앞서 만든 인증서 선택, 예, web.example.com

      image-20230330001228757

    1. Manage Logging

      • 에러 로그와 액세스 로그를 OCI Log 서비스를 사용하도록 설정할 수 있습니다. 일단 여기서는 사용하지 않습니다.
    2. Submit을 클릭하여 Load Balancer를 생성합니다.

Load Balancer 연결확인

  1. 생성한 Load Balancer의 Public IP(예, 144.22.xx.xx)를 확인합니다.

  2. 여기서는 테스트 편의상 클라이언트 호스트 파일에 등록합니다. (구매한 도메인을 사용하는 경우, DNS 서버에 등록하면 됩니다.)

    # Mac / Linux
    # /etc/hosts
    144.22.xx.xx  web.example.com
    
  3. 웹브라우저에서 https로 접속합니다. https://web.example.com

  4. 아래와 같은 결과가 나오면 정상적으로 HTTPS로 접속한 것입니다. 다만, 사설 CA을 사용하여 발급된 인증서를 Load Balancer의 인증서로 사용했기 때문에, 아래와 같이 보안 경고가 뜹니다. 고급 항목을 클릭하고, 경고를 무시하고 해당 페이지로 이동합니다.

    image-20240401161951738

  5. 아래와 같이 페이지에 접속할 수 있습니다.

    image-20240401162019161

  6. 인증서를 확인합니다.

    image-20240401162101106

  7. 이름을 포함한 인증서 정보를 볼수 있습니다. OCI Certificate에서 생성한 CA와 Certificate 정보를 확인할 수 있습니다. 이후 인증서 갱신 테스트를 위해 현재 유효성 기간을 확인합니다.

    image-20230330002336972

클라이언트 브라우저에서 개인 정보 보호 오류 해결하기

OCI Certificate에서 만든 Root CA는 사설 CA이기 때문에 위와 같이 브라우저에서 해당 CA로 발급한 인증서를 사용하는 웹사이트에 대해서 개인 정보 보안 오류가 발생합니다. 클라이언트 OS에서 사전에 설치된, 알려진 기관의 인증서가 아니기 때문에 발생하는 오류입니다. 해당 오류가 뜨지 않게 하기 위해서는 클라이언트에 사설 CA를 등록하는 과정이 필요합니다.

  1. OCI 콘솔에서 내비게이션 메뉴의 Identity & Security > Certificate > Certificate Authorities를 클릭합니다.

  2. 앞서 만든 Certificate Authoritiy인 my-oci-root-ca을 클릭합니다.

  3. Resources > Versions을 클릭하고, 현재 버전의 우측 액션 메뉴에서 View Content를 클릭합니다.

    image-20240401152320827

  4. Certificate PEM을 다운로드 받습니다.

    image-20240401152349354

Mac 기준: 루트 인증서 추가

클라이언트 브라우저를 실행하는 환경에 다운받은 CA를 설치합니다.

  1. 키체인 접근을 실행합니다.

  2. 시스템 키체인 잠금 해제합니다

    image-20230701231519703

  3. 새로운 키체인 항목 생성 아이콘을 클릭합니다.

    image-20230701231805965

  4. 다운받은 (my-oci-root-ca) 인증서 파일 선택

    image-20240401153220474

  5. 추가된 인증서를 더블 클릭합니다.

    image-20240401153301824

  6. SSL을 항상 신뢰로 변경합니다. 창을 닫으면, 관리자 암호 입력후 저장할 수 있습니다.

    image-20240401153352417

  7. 인증서 설정이 완료되었습니다.

    image-20240401153427465

  8. 인증서가 등록후 다시 웹페이지를 접속하면 인증오류가 발생하지 합니다. 오류가 발생하는 경우 브라우저 캐시를 클리어하고 다시 시도합니다.

    image-20240401162831637

    image-20240401162923215

OCI Certificate 서비스에서 인증서 갱신하기

  1. OCI 콘솔에서 내비게이션 메뉴의 Identity & Security » Certificate » Certificate을 클릭합니다.

  2. Load Balancer에 등록해 사용하고 있는 인증서를 클릭합니다.

  3. 만료를 가정하여 Renew Certificate을 클릭하여 인증서를 갱신합니다.

    image-20230330002841260

  4. 기존 인증서와 차이를 위해 만료기간을 다른 날짜로 변경합니다.

    image-20230330003048241

  5. 새 버전으로 갱신되었습니다.

    image-20230330003319410

Load Balancer 재접속하여 인증서 갱신 확인

  1. 앞서 Load Balancer에 https로 접속한 웹브라우저로 돌아갑니다.

  2. 현재 화면을 재접속합니다.

  3. 만료날짜를 통해 갱신된 인증서가 적용된 것을 알 수 있습니다.

    image-20230330003819262

인증서 자동 갱신

  1. 인증서를 갱신합니다. 기본값을 사용하면, 90일간 유효한 인증서가 발급됩니다.

    image-20230330161801146

    image-20230330161809250

  2. Resources > Rules 로 이동합니다.

  3. 기본값은 유효기간 90일로, 90일간 인증서는 유효하며, 만료 30일전에 자동 갱신되는 규칙입니다. 갱신된 인증서 또한 90일간 유효합니다.

  4. 테스트상 자동 갱신을 빠르게 확인하기 위해, 사전 갱신 기간을 만료 89일 전으로 변경합니다. 즉 내일 다시 갱신되도록 설정합니다.

    • Renewal Interval (Days): 인증서가 자동으로 갱신되는 빈도, 주기를 입력합니다. 현재 버전의 인증서가 만료되기 이전일로 설정합니다. 인증서가 갱신되기 전에, 이전 인증서로 만료되도록은 설정할 수 없습니다.
    • Advance Renewal Period (Days): 만료일 기준으로 며칠 전에 미리 갱신할 지 사전 갱신 일자를 설정합니다.

    image-20230330162124204

  5. 다음 날인(3월 31일)에 자동으로 갱신되어 버전 4가 만들어진 것을 확인할 수 있습니다.

    image-20230331171605215



이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 1 Jan 0001