附註:

使用 OCI 憑證簽發內部憑證,並在 Nginx 伺服器上代管受 TLS/SSL 保護的網站

簡介

在本教學課程中,我們會描述如何使用 Oracle Cloud Infrastructure (OCI) Certificates 發出內部憑證,以託管 Nginx 伺服器上受傳輸層安全 (TLS) / 安全通訊端層 (SSL) 保護的網站。OCI Certificates 是一項用於建立及管理 TLS 憑證的服務。此服務可讓組織建立私有憑證授權機構 (CA) 階層和 TLS 憑證,以便在客戶租用戶中自動部署和續約,並與 OCI 負載平衡器和 OCI API 閘道等 OCI 服務整合。我們也可以使用此服務為 Nginx 代管的內部 Web 伺服器產生憑證。

若要在您的 Nginx 伺服器上啟用 TLS/SSL 加密,您必須要有 TLS/SSL 憑證。「憑證簽署要求 (CSR)」是傳送給 CA 以取得憑證的要求。CSR 包含您要求憑證之組織和網域的相關資訊。此資訊會在簽發 TLS/SSL 憑證之前由 CA 驗證。確認此資訊可確保憑證已發行給網域的正確擁有者。當您建立 CSR 時,也會產生私密金鑰。此私密金鑰用於解密使用對應公開金鑰加密的資料。請務必安全地產生金鑰,並確保金鑰安全。

目標

必要條件

作業 1:在 OCI Compute 執行處理上安裝 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

Command Format - 命令格式:

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. 建立名為 mywebsitecert.cnf 的檔案來指定參數,例如您要求憑證的主體替代名稱 (SAN)。

    注意: SAN 擴充功能可將其他識別 (例如網域名稱或 IP 位址) 連附至憑證主體。使用 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。

    您必須提供 mywebsite.csr 檔案給 CA,才能取得 SSL 憑證。它們會使用此來產生您網域的 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. 請執行下列命令來建立憑證。

    Command Format - 命令格式:

    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 檔案、瀏覽至識別與安全性憑證憑證檢視內容,以及下載 certificate-pemcertificate-chain-pem 的內容。

結合檔案的內容、頂端的 certificate-pem 以及檔案底端的 certificate-chain-pem,建立單一檔案。您可以將其命名為 ca_certificate.pem

您也可以使用下列命令從 OCI CLI 擷取憑證。

Command Format - 命令格式:

oci certificates certificate-bundle get --certificate-id <Certificate_OCID> > certificate.crt

注意:請複製憑證的 Oracle Cloud Identifier (OCID)。

工作 6:使用憑證安裝和設定 Nginx 伺服器

  1. 在運算執行處理上安裝 Nginx。如需詳細資訊,請參閱 Install Nginx

  2. 開啟 Web 瀏覽器並使用 https://your-server-ip 存取網頁。檢查瀏覽器可能顯示的任何安全性警告或錯誤。

    圖像

    它會顯示安全警告,因此我們需要在 Nginx 伺服器上安裝憑證並修改 conf 檔案。

  3. 將下載的 certificate.pemca_certificate.pem 檔案從 OCI 主控台或 OCI CLI 複製到您的 Nginx 伺服器。

  4. 編輯 Nginx 伺服器的組態檔 (位於 /etc/nginx/conf.d),以設定您的 Nginx 伺服器。

    圖像

  5. 重新啟動 Nginx 伺服器。

作業 7:測試 HTTPS 是否運作中

我們已將 CA 憑證 (ca_certificate.pem) 放置在本機機器的受信任根憑證授權機構資料夾中,用於存取此網站的用戶端機器上的憑證儲存區。這是因為 OCI Certificates 所建立的 CA 是私密 CA,因此不受瀏覽器信任,因此我們必須在嘗試存取網站的所有本機機器上,將根 CA 和中介 CA (若有使用的話) 新增至「受信任的根存放區」或「中介存放區」。

開啟 Web 瀏覽器並使用 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