주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마칠 때는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
OCI 인증서를 사용하여 내부 인증서를 발행하고 Nginx 서버에서 TLS/SSL 보호 웹 사이트를 호스트합니다.
소개
이 사용지침서에서는 OCI(Oracle Cloud Infrastructure) 인증서를 사용하여 내부 인증서를 발행하여 Nginx 서버에서 TLS(전송 계층 보안)/SSL(Secure Sockets Layer) 보호 웹 사이트를 호스팅하는 방법에 대해 설명합니다. OCI 인증서는 TLS 인증서를 만들고 관리하기 위한 서비스입니다. 이 서비스를 통해 조직은 OCI 로드 밸런서 및 OCI API 게이트웨이와 같은 OCI 서비스와 통합되어 고객 테넌시에서 자동으로 배포 및 갱신할 수 있는 전용 CA(인증 기관) 계층 및 TLS 인증서를 생성할 수 있습니다. 또한 이 서비스를 사용하여 Nginx에서 호스팅되는 내부 웹 서버에 대한 인증서를 생성할 수 있습니다.
Nginx 서버에서 TLS/SSL 암호화를 활성화하려면 TLS/SSL 인증서가 필요합니다. CSR(Certificate Signing Request)은 인증서를 얻기 위해 CA로 전송되는 요청입니다. CSR에는 인증서를 요청하는 조직 및 도메인에 대한 정보가 포함되어 있습니다. 이 정보는 TLS/SSL 인증서를 발행하기 전에 CA에서 확인합니다. 이 정보를 확인하면 인증서가 도메인의 올바른 소유자에게 발급됩니다. CSR을 만들 때 개인 키도 생성합니다. 이 개인 키는 해당 공개 키로 암호화된 데이터를 해독하는 데 사용됩니다. 이 키를 안전하게 생성하고 안전하게 유지하는 것이 중요합니다.
목표
- OCI 인증서를 사용하여 내부 인증서를 발행하고 Nginx 서버에서 TLS/SSL로 보호된 웹 사이트를 호스트합니다.
필요 조건
-
로컬 시스템에 Oracle Cloud Infrastructure 명령행 인터페이스(OCI CLI)를 설치합니다. OCI CLI 설치 페이지에서 다운로드할 수 있습니다.
-
필요한 자격 증명 및 구성으로 OCI CLI를 설정하고 구성합니다.
oci setup config
명령을 사용하여 OCI CLI를 구성할 수 있습니다. -
서버에 Nginx를 설치합니다. 자세한 내용은 NDGINX 구성 업데이트를 참조하십시오.
작업 1: OCI 컴퓨트 인스턴스에 OCI CLI 설치
-
OCI CLI를 설치하고 구성합니다. 자세한 내용은 OCI 명령행 인터페이스(CLI)를 참조하십시오.
-
OCI 컴퓨팅 인스턴스에 연결한 후 다음 명령을 실행하여 Linux 인스턴스에서 Python 및 OCI CLI 패키지를 설치하고 확인합니다.
sudo dnf -y install oraclelinux-developer-release-el8 sudo dnf install python36-oci-cli
작업 2: OCI에 CA(인증 기관) 생성
OCI 인증서 서비스를 사용하여 CA(인증 기관)를 생성합니다. 이 서비스는 당사 웹 사이트의 내부 인증서를 발행하는 데 사용됩니다. CA 구성에 대한 자세한 내용은 Creating a Certificate Authority를 참조하십시오.
또는
OCI CLI를 사용하여 CA를 생성합니다. oci certs-mgmt certificate create-certificate-issued-by-internal-CA
명령 및 필수 매개변수를 사용하여 루트 CA를 만듭니다. 자세한 내용은 create-certificate-issued-by-internal-ca를 참조하십시오.
명령 형식:
oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id <compartment_OCID> --name <CA_display_name> --subject <CA_subject_information> --kms-key-id <Vault_encryption_key_OCID>
샘플 명령:
oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id ocid1.compartment.oc1..aaaaaaaaxxx --name MyRootCA --subject file://subject.json --kms-key-id ocid1.key.oc1.iad.abcxxxxx
참고: 제목은 값이 적합한 JSON이어야 하는 복합 유형입니다. 이 값은 명령줄에 문자열로 제공되거나
file://path/to/file
구문을 사용하여 파일로 전달될 수 있습니다.
샘플 subject.json
파일.
subject.json
{
"commonName": "MyRootCA"
}
작업 3: OpenSSL를 사용하여 CSR(인증서 서명 요청) 생성
Nginx 서버에서 CSR을 만들고, 동일한 서버에 개인 키를 만듭니다. 이 방법은 공용 키에 CA를 보내는 표준화된 방법과 회사 및 도메인 이름을 식별하는 일부 정보를 제공하는 권장 접근 방법입니다. Nginx 서버에서 직접 CSR을 생성하면 발급된 TLS/SSL 인증서를 원활하게 통합할 수 있습니다.
-
cd /etc/pki/tls/private/
로 이동합니다. -
인증서를 요청할 SAN(주체 대체 이름)과 같은 매개변수를 지정하기 위해
mywebsitecert.cnf
라는 파일을 만듭니다.주: SAN 확장을 사용하면 도메인 이름 또는 IP 주소와 같은 추가 ID를 인증서 주체에 연결할 수 있습니다. SAN 확장의 사용은 SSL 인증서에 대한 표준 관행이며 공통 이름 사용을 대체합니다.
샘플 파일:
[req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] C = IN ST = Telangana L = Hyd O = OU CN = www.mywebsite.com [v3_req] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = mywebsite.com IP.1 = 1.2.3.4
-
다음 명령을 사용하여 CSR을 만듭니다.
SSL 인증서를 받으려면 CA에
mywebsite.csr
파일을 제공해야 합니다. 도메인의 SSL 인증서를 생성하는 데 사용됩니다.mywebsitecert.cnf
파일을 통해 이미 제공된 구성을 사용합니다.private.key
파일은 해당 공개 키로 암호화된 데이터를 해독하는 데 사용되므로 보안을 유지합니다.openssl req -out mywebsite.csr -newkey rsa:4096 -nodes -keyout private.key -config mywebsitecert.cnf
작업 4: CA를 사용하여 인증서 만들기
OCI CLI를 사용하여 새 인증서를 생성하려면 Nginx 서버에 설치할 인증서의 .pem
가 필요합니다.
-
csr
파일의 형식을.pem
형식으로 변환합니다.openssl req -inform DER -in mywebsite.csr -out mywebsite.pem
-
다음 명령을 실행하여 인증서를 만듭니다.
명령 형식:
oci certs-mgmt certificate create-certificate-managed-externally-issued-by-internal-ca --compartment-id <compartment_OCID> --csr-pem <csr_pem> --issuer-certificate-authority-id <CA_OCID> --name <Certificate-name>
샘플 명령:
oci certs-mgmt certificate create-certificate-managed-externally-issued-by-internal-ca --compartment-id ocid1.compartment.oc1..aaaaaaaaxxx --csr-pem mywebsite.pem --issuer-certificate-authority-id ocid1.certificateauthority.oc1.iad.aaaxxxx --name mywebsite.com
작업 5: 인증서 및 인증서 체인 다운로드
OCI 콘솔에서 직접 인증서 pem
파일을 가져와서 ID 및 보안, 인증서, 인증서, 콘텐츠 보기로 이동하고 certificate-pem
및 certificate-chain-pem
의 콘텐츠를 다운로드할 수 있습니다.
두 파일의 콘텐츠(위쪽에는 certificate-pem
, 아래쪽에는 certificate-chain-pem
)를 결합하여 단일 파일을 생성합니다. 이름은 ca_certificate.pem
로 지정할 수 있습니다.
또는
다음 명령을 사용하여 OCI CLI에서 인증서를 인출할 수도 있습니다.
명령 형식:
oci certificates certificate-bundle get --certificate-id <Certificate_OCID> > certificate.crt
주: 인증서의 OCID(Oracle Cloud Identifier)를 복사합니다.
작업 6: 인증서로 Nginx 서버 설치 및 구성
-
컴퓨팅 인스턴스에 Nginx를 설치합니다. 자세한 내용은 Install Nginx를 참조하십시오.
-
웹 브라우저를 열고
https://your-server-ip
를 사용하여 웹 페이지에 액세스합니다. 브라우저에서 표시할 수 있는 보안 경고 또는 오류가 있는지 확인합니다.보안 경고가 표시되므로 인증서를 설치하고 Nginx 서버에서
conf
파일을 수정해야 합니다. -
다운로드한
certificate.pem
및ca_certificate.pem
파일을 OCI 콘솔 또는 OCI CLI에서 Nginx 서버로 복사합니다. -
/etc/nginx/conf.d
에 있는 구성 파일을 편집하여 Nginx 서버를 구성합니다. -
Nginx 서버를 다시 시작합니다.
작업 7: HTTPS가 작동 중인지 테스트
CA 인증서(ca_certificate.pem
)를 로컬 시스템의 신뢰할 수 있는 루트 인증 기관 폴더에 배치했습니다. 이 웹 사이트에 액세스하는 데 사용되는 클라이언트 시스템의 인증서 저장소입니다. 이 작업은 OCI 인증서에서 생성된 CA가 전용 CA이므로 브라우저에서 신뢰할 수 없으므로 웹 사이트에 액세스하려는 모든 로컬 시스템의 Trusted Root Store 또는 Intermediate Store에 루트 CA 및 중간 CA(사용되는 경우)를 추가해야 하기 때문에 수행됩니다.
웹 브라우저를 열고 https://your-server-ip
를 사용하여 웹 페이지에 액세스합니다. 이제 웹 페이지에 유효한 TLS 인증서가 제공되고 있으며 이전에 발생한 보안 경고 또는 오류를 해결해야 합니다.
이러한 작업을 수행하면 Nginx 서버가 내부 CA 인증서로 제대로 구성되고 클라이언트가 HTTPS를 통해 웹 페이지에 안전하게 액세스할 수 있는지 확인합니다.
관련 링크
확인
- 작성자 - Shruti Soumya
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Use OCI Certificates to Issue an Internal Certificate and Host a TLS/SSL Protected Website on Nginx Server
F94731-01
March 2024