1. HTTP와 HTTPS
https://haksuperman.tistory.com/71
HTTS 프로토콜을 사용해 "http://<애플리케이션 퍼블릭 IP 주소>:5000"의 형식으로 접속했다. 그러나 브라우저와 서버 간의 데이터 통신을 더 안전하게 보호하려면 HTTPS 프로토콜을 사용하는 것이 좋다. 아니 꼭 이렇게 해야 한다.
HTTPS는 데이터를 암호화해서 보호된 연결을 제공하는 프로토콜로 SSL(Secure Sockets Layer)과 TLS(Transport Layer Security) 프로토콜을 활용한다.
SSL은 TLS의 이전 버전이고, TLS는 SSL의 후속 버전이다. TLS는 보안 측면에서 더 강화된 통신을 제공하는 것으로 이해할 수 있다.
HTTPS 통신을 위해서는 서버에서 클라이언트로 제공하는 공개 키 인증서, HTTP 인증서가 필요하다.
이 인증서는 인증 기관(CA, Certificate Authority)에서 발급되며, 데이터 암호화와 복호화에 사용된다. HTTP 인증서는 발급 주체가 해당 인증서의 공개키 소유자임을 확인하는 디지털 문서로 볼 수 있다. 이를 통해 데이터의 기밀성과 무결성을 유지할 수 있다.
2. HTTPS 동작 절차
- HTTP 인증서 설치 : 인증 기관에서 발급받은 HTTP 인증서를 서버에 설치한다. 이 인증서는 서버의 공개 키와 서버 정보를 포함한다.
-> 내 웹 서버는 안전해야 해! - 클라이언트 연결 : 클라이언트가 https:// 형식으로 서버에 접속을 시도한다.
-> 클라이언트가 웹 서버에 접속을 시도 한다. - 서버의 인증서 제공 : 서버는 클라이언트에게 자체 인증서를 전송한다. 이 인증서에는 서버의 공개키와 서명 정보가 포함되어 있다.
-> 나 진짜 웹 서버야. 인증 기관에서 받은 증거 줄게. - 클라이언트의 신뢰 확인 : 클라이언트는 서버의 인증서가 신뢰할 수 있는 인증 기관에서 발급된 것인지 확인한다. 이를 통해 클라이언트는 서버의 신원을 확인할 수 있다.
-> 너 진짜 웹 서버 맞구나? - 대칭 암호화 개인 키 생성 : 클라이언트는 대칭 암호화에 사용할 개인 키를 생성한다. 대칭 암호화는 데이터를 암호화하고 복호화하는 데 사용되며, 개인키는 클라이언트만 알고 있다.
-> 너한테 맞는 개인 인증 키를 만들어서 접속할게. - 데이터 암호화 및 전송 : 클라이언트는 생성한 개인키와 서버의 공개키를 사용해서 데이터를 암호화하고 서버로 전송한다. 서버는 자신의 개인키와 클라이언트의 공개키를 사용해서 데이터를 복호화한다.
-> 클라이언트는 '너 공개키랑 내 개인키랑 트릭으로 숨겨서 보낼게' / 서버는 '반대로 내 개인키랑 너 공개키랑 역으로 풀어 확인할게'
오라클 클라우드에서는 이런 TLS 인증서를 생성하고 관리하는 인증서 서비스를 제공하고 있다. 테넌시 내부에서 사용할 수 있는 내부 인증서를 발급할 수도 있고, 다른 인증 기관에서 발급한 인증서를 Import 해서 사용할 수도 있다.
3. OCI TLS 인증서 설정
1) 내부 TLS 인증서를 설정하는 세부 단계
- OVI Vault 생성
- RSA 마스터 암호화 키 생성
- CA(Certificate Authority) 생성
- 인증서 발급
- 인증서 활용(로드밸런서, API 게이트웨이)
2) OCI Vault 생성
Allow group <GROUP_NAME> to manage key-family in compartment <COMPARTMENT_NAME> Allow group <GROUP_NAME> to manage secret-family in compartment <COMPARTMENT_NAME> |
해당 내용을 정책에 추가해 권한을 가져야 한다.
(실습용으로 all-resources 권한을 부여했기 때문에 인지만 하고 넘어 간다)
[Identity & Security → Key Management & Secret Management → Vault] 선택
Create Vault 선택
Name : oci-demo-vault
생성된 것 확인
3) RSA 마스터 암호화 키 생성
Vault가 생성되면 Vault 내에 마스터 암호화 키를 생성해야 한다.
Protection Mode : HSM
Name : oci-demo-ms-key
Key Shape : Algorithm : RSA(Asymmetric key used for Encrypt, Decrypt and Verify)
이후에 내부 CA를 생성할 때 마스터 암호화 키를 입력한다. 이때 비대칭 키만 허용되기 때문에 RSA 또는 ECDSA 알고리즘 중 하나를 선택해야 한다.
마스터 암호화 키 보호 모드
HSM(Hardware Security Module)과 Software 모드로 나뉜다.
HSM 모드는 암호화 키를 생성, 저장 및 관리하며 안전한 암호화 작업을 수행하는 데 사용되는 별도의 물리적 장치이다. 호스트 시스템에서 격리되어(물리적으로 격리) 하드웨어 수준의 보안을 제공하므로 안전한 키 관리와 암호화 작업을 할 수 있다.
Software 모드는 서버의 소프트웨어에서 암호화 키 생성 및 관리를 처리한다. HSM과 비교하여 물리적 보안 수준은 낮을 수 있지만 키 관리 및 암호화 작업을 간편하게 소프트웨어로 처리할 수 있다.
4) CA 생성
앞서 만든 정책 "oci-demo-policy"에 테넌시 내 사용자가 CA를 사용할 수 있도록 2개의 권한을 추가해야 한다. "all-resources"를 제어할 수 있는 유저라고 할지라도 CA를 생성하려면 이 2개의 권한이 필요하다.
[Identity & Security → Policies] 선택
root 컴파트먼트로 변경
생성했던 oci-demo-policy 선택
Edit Policy Statements 선택
+Another Statement 선택
두 개의 권한 추가
Allow any-user to use keys in tenancy where request.principal.type='certificateauthority' Allow any-user to manage objects in tenancy where request.principal.type='certificateauthority' |
권한 적용된 것 확인
[Identity & Security → Certificates → Certificate Authorities] 선택
Create Certificate Autority 선택
Certificate Autority Type : Root Certificate Autority 선택
Name : oci-demo-int-cert-auth
CA 소유자를 식별하기 위한 Common Name 입력
Common Name : oci-demo-int-cert-auth
생성한 Vault와 마스터 암호화 키 정보가 정상적으로 로드되는지 확인
"Not Valid Before" 필드는 CA의 적용 시작 시점을 설정하는 필드로 필요한 경우 값을 입력해서 설정할 수 있다. 값이 입력되지 않으면 즉시 적용된다.
입력하지 않고 비어있는 상태로 진행한다.
"Not Valid After" 필드는 CA의 만료 시점을 설정하는 필드로 기본값은 1년이지만 필요에 따라 변경할 수 있다.
Rules 화면은 앞서 설정한 CA 적용 시점을 기준으로 CA 적용 기간을 설정하는 단계이다.
"Maximum Validity Duration for Certificates (Days)"와 "Maximum Validity Duration for Subordinate CA (Days)"는 현재 상태 그대로 두고 진행한다.
Skip Revocation 체크
(인증서가 더 이상 신뢰할 수 없을 때 해당 인증서에 대한 해지를 설정하는 것이다. 이를 위해 CA 생성, 해지 이력이라고 할 수 있는 인증서 해지 목록(CRL, Certificate Revocation List)을 어디에 저장할지 지정해야 한다)
지금까지 설정한 내용을 확인하고 Create Certificate Autority 클릭
5) 인증서 발급
CA 생성 후에 해당 CA 상세 화면에서 인증서를 발급한다.
생성한 CA 선택
Issue Certificate 선택
Certificate Type : Issued by internal CA
Name : oci-demo-certificate
인증서의 소유자를 식별하기 위한 Common Name 입력
Common Name : oci-demo-certificate
Certificate Configuration 화면은 기본 설정 상태 유지
Certificate Profile Type 설정은 인증서 용도에 따른 프로파일을 미리 정의해 놓은 것이다. 네 가지 프로파일 중 TLS Server on Client 선택
Certificate Profile Type : TLS Server or Client
Not Valid Before : 값이 입력되지 않으면 즉시 적용된다. 입력하지 않고 현재의 비어 있는 상태를 유지
Not Valid After : 기본값으로 설정된 날짜보다 하루 더 빠르게 지정한다. 이는 인증서 생성 시 최종 단계에서 나타날 수 있는 "The validity period 7839114782 exceeds the maximum validity period allowed 7776000000."이라는 에러 메시지를 피하기 위함이다.
Rules 화면에서는 인증서의 만료를 피할 수 있도록 인증서의 자동 갱신 설정을 조정할 수 있다.
Renewal Interval : 이 옵션은 얼마나 자주 인증서를 갱신할지를 지정한다.
Advanced Renewal Period : 이 옵션은 인증서 만료 전에 얼마나 오랜 기간 전에 인증서 갱신을 발생시킬지를 설정한다.
설정한 내용 확인 후 Create Certificate 선택
인증서 생성 확인
'Cloud > OCI(Oracle Cloud Infrastructure)' 카테고리의 다른 글
[OCI] OCI CLI를 활용한 자원 정리 (Feat. OCI Cloud Shell) (0) | 2024.06.29 |
---|---|
[OCI] 로드밸런서, 오토스케일링 설정 (+프리티어 계정 업그레이드) (0) | 2024.06.28 |
[OCI] 애플리케이션 배포 (Feat. Flask, PyMySQL, Faker) (0) | 2024.06.21 |
[OCI] 데이터베이스 설치 및 기본 구성 (Feat. MySQL) (0) | 2024.06.20 |
[OCI] 통신을 위한 네트워크 설정 (Feat. 시큐리티 리스트, Bastion 세션, 서버 자체 방화벽 설정) (0) | 2024.06.20 |
개인 공부 목적으로 사용하는 블로그입니다 :)
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!