注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于您的云环境的值。
使用 OCI 证书在 Nginx 服务器上颁发内部证书并托管受 TLS/SSL 保护的网站
简介
在本教程中,我们将介绍如何使用 Oracle Cloud Infrastructure (OCI) 证书在 Nginx 服务器上发布内部证书来托管传输层安全 (Transport Layer Security,TLS)/安全套接字层 (Secure Sockets Layer,SSL) 保护的网站。OCI 证书是一项用于创建和管理 TLS 证书的服务。通过该服务,组织可以创建专用证书颁发机构 (CA) 层次结构和 TLS 证书,这些层次结构和证书可以在客户租户中自动部署和续订,并与 OCI 负载平衡器和 OCI API 网关等 OCI 服务集成。我们还可以使用此服务为托管在 Nginx 上的内部 Web 服务器生成证书。
要在 Nginx 服务器上启用 TLS/SSL 加密,需要 TLS/SSL 证书。证书签名请求 (CSR) 是发送到 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。有关详细信息,请参阅更新 NGINX 配置。
任务 1:在 OCI 计算实例上安装 OCI CLI
-
安装和配置 OCI CLI。有关更多信息,请参见 OCI Command Line Interface (CLI) 。
-
连接到 OCI 计算实例后,运行以下命令在 Linux 实例上安装和验证 Python 和 OCI CLI 程序包。
sudo dnf -y install oraclelinux-developer-release-el8 sudo dnf install python36-oci-cli
任务 2:在 OCI 中创建证书颁发机构 (Certificate Authority,CA)
使用 OCI 证书服务创建证书颁发机构 (Certificate Authority,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 创建证书签名请求 (Certificate Signing Request,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。
您需要向 CA 提供
mywebsite.csr
文件才能获取 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
-
运行以下命令以创建证书。
命令格式:
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 提取证书。
命令格式:
oci certificates certificate-bundle get --certificate-id <Certificate_OCID> > certificate.crt
注:复制证书的 Oracle Cloud 标识符 (OCID)。
任务 6:使用证书安装和配置 Nginx 服务器
-
在计算实例上安装 Nginx。有关详细信息,请参阅安装 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 证书创建的 CA 是专用 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 帮助中心。
Use OCI Certificates to Issue an Internal Certificate and Host a TLS/SSL Protected Website on Nginx Server
F94733-01
March 2024