주:

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을 만들 때 개인 키도 생성합니다. 이 개인 키는 해당 공개 키로 암호화된 데이터를 해독하는 데 사용됩니다. 이 키를 안전하게 생성하고 안전하게 유지하는 것이 중요합니다.

목표

필요 조건

작업 1: OCI 컴퓨트 인스턴스에 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 인증서를 원활하게 통합할 수 있습니다.

  1. cd /etc/pki/tls/private/로 이동합니다.

  2. 인증서를 요청할 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
    
    
  3. 다음 명령을 사용하여 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가 필요합니다.

  1. csr 파일의 형식을 .pem 형식으로 변환합니다.

    openssl req -inform DER -in mywebsite.csr -out mywebsite.pem
    
  2. 다음 명령을 실행하여 인증서를 만듭니다.

    명령 형식:

    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-pemcertificate-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 서버 설치 및 구성

  1. 컴퓨팅 인스턴스에 Nginx를 설치합니다. 자세한 내용은 Install Nginx를 참조하십시오.

  2. 웹 브라우저를 열고 https://your-server-ip를 사용하여 웹 페이지에 액세스합니다. 브라우저에서 표시할 수 있는 보안 경고 또는 오류가 있는지 확인합니다.

    이미지

    보안 경고가 표시되므로 인증서를 설치하고 Nginx 서버에서 conf 파일을 수정해야 합니다.

  3. 다운로드한 certificate.pemca_certificate.pem 파일을 OCI 콘솔 또는 OCI CLI에서 Nginx 서버로 복사합니다.

  4. /etc/nginx/conf.d에 있는 구성 파일을 편집하여 Nginx 서버를 구성합니다.

    이미지

  5. 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를 통해 웹 페이지에 안전하게 액세스할 수 있는지 확인합니다.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.