附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
使用 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 時,也會產生私密金鑰。此私密金鑰用於解密使用對應公開金鑰加密的資料。請務必安全地產生金鑰,並確保金鑰安全。
目標
- 使用 OCI Certificates 發出內部憑證,並在 Nginx 伺服器上代管受 TLS/SSL 保護的網站。
必要條件
-
在本機機器上安裝 Oracle Cloud Infrastructure 命令行介面 (OCI CLI)。您可以從 OCI CLI 安裝頁面下載此檔案。
-
使用必要的證明資料和組態設定並設定 OCI CLI。您可以使用
oci setup config
命令來設定 OCI CLI。 -
在您的伺服器上安裝 Nginx。有關詳細資訊,請參閱更新 NGINX 組態。
作業 1:在 OCI Compute 執行處理上安裝 OCI CLI
-
安裝並設定 OCI CLI。如需詳細資訊,請參閱 OCI Command Line Interface (CLI) 。
-
連線至 OCI Compute 執行處理之後,請執行下列命令,在 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 。
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 憑證之後,以無縫接軌的方式整合。
-
瀏覽至
cd /etc/pki/tls/private/
。 -
建立名為
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
-
請使用下列命令來建立 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
。
-
將
csr
檔案的格式轉換為.pem
格式。openssl req -inform DER -in mywebsite.csr -out mywebsite.pem
-
請執行下列命令來建立憑證。
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-pem
與 certificate-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 伺服器
-
在運算執行處理上安裝 Nginx。如需詳細資訊,請參閱 Install Nginx 。
-
開啟 Web 瀏覽器並使用
https://your-server-ip
存取網頁。檢查瀏覽器可能顯示的任何安全性警告或錯誤。它會顯示安全警告,因此我們需要在 Nginx 伺服器上安裝憑證並修改
conf
檔案。 -
將下載的
certificate.pem
和ca_certificate.pem
檔案從 OCI 主控台或 OCI CLI 複製到您的 Nginx 伺服器。 -
編輯 Nginx 伺服器的組態檔 (位於
/etc/nginx/conf.d
),以設定您的 Nginx 伺服器。 -
重新啟動 Nginx 伺服器。
作業 7:測試 HTTPS 是否運作中
我們已將 CA 憑證 (ca_certificate.pem
) 放置在本機機器的受信任根憑證授權機構資料夾中,用於存取此網站的用戶端機器上的憑證儲存區。這是因為 OCI Certificates 所建立的 CA 是私密 CA,因此不受瀏覽器信任,因此我們必須在嘗試存取網站的所有本機機器上,將根 CA 和中介 CA (若有使用的話) 新增至「受信任的根存放區」或「中介存放區」。
開啟 Web 瀏覽器並使用 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
F94734-01
March 2024