注意:

使用 OCI 证书服务为 IIS 服务器上托管的网站颁发内部证书

简介

Oracle Cloud Infrastructure (OCI) 证书是一项用于创建和管理传输层安全 (Transport Layer Security,TLS) 证书的服务。通过该服务,组织可以创建专用证书颁发机构 (CA) 层次结构和 TLS 证书,这些层次结构和证书可以在客户租户中自动部署和续订,并与 OCI 负载平衡器和 OCI API 网关等 OCI 服务集成。我们还可以使用此服务为托管在 Internet 信息服务 (IIS)、Apache 或 nginx 上的内部 Web 服务器生成证书。

目标

在本教程中,我们将介绍如何使用 OCI 证书在 Windows IIS 服务器上发布用于托管 TLS/SSL 保护网站的内部证书。我们将讨论两种选择。

先决条件

注意:不要输入机密信息。

任务 1:创建证书颁发机构

无论是使用 CSR 颁发证书,还是直接通过 OCI Certificates CA 颁发证书,都需要创建 CA。有关如何配置 CA 的更多信息,请参见 Creating a Certificate Authority

使用 OCI 证书创建根 CA 或从属 CA。必须具有根 CA 才能创建从属 CA。单层层次结构包含一个 CA。单个 CA 既是根 CA,又是发出 CA。根 CA 是 PKI 信任锚的术语。信任根 CA 的任何应用程序、用户或计算机都信任 CA 分层结构颁发的任何证书。颁发 CA 是向最终实体颁发证书的 CA。但是,双层层次结构是满足大多数公司需求的设计。在此设计中,存在根 CA 和下属,发出 CA。由于根 CA 和发出 CA 角色分开,因此安全性级别会增加。创建 CA 需要您从 OCI Vault 访问受硬件保护的现有非对称加密密钥。有关详细信息,请参阅 OCI Vault 概览

  1. 打开导航菜单,然后单击身份和安全性

  2. 证书下,单击证书颁发机构

  3. 单击 Create Certificate Authority

  4. 单击区间,然后选择要在其中创建 CA 的区间。

  5. 证书颁发机构类型下,从以下选项中选择 CA 的类型。

    1. 根证书颁发机构:CA 链中层次顶部的 CA。

    2. 从属证书颁发机构:包含其他 CA 的层次中不是根 CA 的任何 CA。

  6. 输入 CA 的显示名称。此名称可帮助您标识 CA 以用于管理,但不会显示为 CA 证书的一部分。

  7. (可选)输入说明以帮助标识 CA。此描述可帮助您标识 CA,但不会显示为 CA 证书的一部分。

  8. (可选)要应用标记,请单击显示标记。有关更多信息,请参见资源标记,然后单击下一步

  9. 输入主题信息,这至少包括用于标识 CA 证书所有者的通用名称。根据证书的预期用途,主题可能会标识人员、组织或计算机端点。主题信息的格式必须符合 RFC 5280 标准。您可以使用通配符为多个域或子域名称颁发证书。

  10. (可选)输入更多 CA 主题信息,单击显示其他字段。有关主题唯一判别名中每个值的详细信息,请单击下一步

  11. (可选)单击之前无效,然后指定要开始使用 CA 的 UTC 时间和日期。如果未指定日期,则 CA 有效期将立即开始。

  12. 单击之后无效,然后指定不再使用 CA 发出或验证从属 CA 或证书的日期。

    :您指定的日期必须至少晚于有效期开始日期的一天。不能指定晚于 2037 年 12 月 31 日的日期。值向上舍入到最近的秒。

  13. 如果创建从属 CA,请在颁发者证书颁发机构下,指定要颁发此 CA 的父 CA。如果创建根 CA,请继续执行下一步。

  14. Vault 下,选择包含要用于 CA 证书的加密密钥的 Vault。可选,单击更改区间以指定其他区间。

  15. Key(密钥)下,选择要使用的保管库中的密钥。该列表仅包含 Vault 中的非对称密钥,因为证书仅支持非对称密钥。您可以从 Rivest-Shamir-Adleman (RSA) 密钥中选择 2048 位或 4096 位。还可以选择椭圆曲线 ID 为 NIST_P384 的椭圆曲线数字签名算法 (ECDSA) 密钥。具体而言,该列表仅包括受硬件安全模块 (Hardware Security Module,HSM) 保护的这些类型的不对称密钥。证书不支持使用受软件保护的密钥。

  16. 签名算法下,根据密钥算法系列选择以下选项之一,然后单击下一步

    • SHA256_WITH_RSA:具有 SHA-256 散列函数的 RSA 密钥

    • SHA384_WITH_RSA:具有 SHA-384 散列函数的 RSA 密钥

    • SHA512_WITH_RSA:具有 SHA-512 散列函数的 RSA 密钥

    • SHA256_WITH_ECDSA:具有 SHA-256 散列函数的 ECDSA 密钥

    • SHA384_WITH_ECDSA:具有 SHA-384 散列函数的 ECDSA 密钥

    • SHA512_WITH_ECDSA:具有 SHA-512 散列函数的 ECDSA 密钥

  17. 配置到期规则。在证书的最长有效期(天)下,指定此 CA 颁发的证书的有效天数上限。我们强烈建议有效期不超过 90 天。

  18. 从属 CA 的最大有效期(天)下,指定此 CA 颁发的 CA 可以有效颁发其他 CA 或证书的最大天数,然后单击下一步

  19. 撤销配置页上,如果不想配置证书撤销列表 (Certificate Revocation List,CRL),请选中跳过撤销复选框。要配置证书撤销,请清除该复选框,然后指定您计划在其中存储 CRL 的专用 OCI 对象存储桶。

  20. (可选)单击更改区间可在其他区间中查找存储桶。

  21. 对象名称格式下,指定对象名称。您可以在对象名称中包含大括号,以指示服务可以在何处插入签发 CA 版本号。此添加有助于防止在创建其他 CA 版本时覆盖现有 CRL。

  22. (可选)定制格式化 URL 下,提供要与 API 一起使用的 URL 以访问对象。此 URL 在证书中命名为 CRL 分发点 (CDP)。可以在 URL 中包括大括号,以指示服务可以在何处插入签发 CA 版本号。此添加有助于避免在创建其他 CA 版本时覆盖现有 CDP。仅当 HTTPS 链验证中不存在循环相关性时,才能指定 HTTPS URL。

  23. (可选)要提供其他 CDP,请单击 + 另一个 URL ,然后提供其他 URL,用户可以在其中访问 CRL,然后单击下一步

  24. 查看信息,然后单击创建证书颁发机构

创建与证书相关的资源可能需要一段时间。创建 CA 后,您可以使用以下两种方法之一获取为 IIS 服务器颁发的证书。

任务 2:使用 CSR 获取颁发的证书

在 IIS 服务器上创建 CSR,该服务器还将在同一服务器上创建私钥。这是推荐的方法,为我们提供了一种标准化的方式来向 CA 发送您的公钥,以及一些标识您的公司和域名的信息。

  1. 使用 IIS 创建 CSR,您需要转到 Internet Information Services (IIS) Manager ,然后在 Connections(连接)菜单下,单击 server name(服务器名称),然后单击 Server Certificates(服务器证书)

    图像 1

  2. 操作菜单中,单击创建证书请求 ... ,然后按如下所示输入所有详细信息,然后单击下一步

    图像 2

    图像 3

  3. 加密服务提供商属性上,输入以下信息,然后单击下一步

    图像 4

    (加密提供程序类型是共享数据格式和加密协议的加密服务提供商系列。数据格式包括算法填充方案、密钥长度和默认模式。)

    Microsoft RSA SChannel 加密提供程序是建议的 CSP,除非您有理由使用任何其他值,否则应使用它。它支持散列、数据签名和签名验证。位长度决定了证书的加密强度:长度越大,安全性就越强。为了提高安全性,建议使用 2048。

  4. 文件名页上,在指定证书请求的文件名下,单击 ... 以浏览到当前结束 IIS 部分的 CSR(将文件另存为 .pem)的位置。

    图像 5

  5. 我们需要登录到 OCI 租户并导入此 CSR。通过使用 .pem 格式的 CSR 文件,您可以转至 OCI Certificates services(OCI 证书服务)Certificate Authority(证书颁发机构)Certificates(证书)Create Certificate(创建证书)并选择 Issued by Internal CA,managed externally(外部管理),然后输入必要的详细信息,如下所示。

    图像 6

  6. 证书配置页上,您必须上载以 .pem 格式的任务 2.5 创建的 CSR 文件,单击下一步,然后单击创建证书

    图像 7

    图像 8

  7. 现在,我们需要创建可用于 IIS 服务器的证书的 .cer 来完成 CSR。可以直接从 OCI 控制台从身份和安全证书证书获取 .cer 文件。单击查看内容并下载证书 pemcertificate-chain-pem 的内容,然后通过将两者的内容与顶部的 certificate-pem 和文件底部的 certificate-chain-pem 组合来创建单个文件(确保将结果文件保存为 .cer)。

  8. 完成后,可以再次转到 IIS 服务器并单击完成证书请求并提供您在上面创建的 .cer 文件并提供友好名称,然后单击下一步

    图像 9

    图像 10

    图像 100

  9. 您可以在 IIS 中的 Server Certificates(服务器证书)下查看证书,并且可以通过修改网站上的绑定来将其用于在 IIS 上托管的网站。编辑站点绑定并选择已安装的证书。

    图像 11

任务 3:从不使用 CSR 的 OCI 证书服务创建证书

在此方法中,您将私钥的管理移交给证书颁发机构。通常,CSR 是从 CA 获取证书的最推荐方法。如果由于任何原因您无法获取 CSR 并希望获得颁发的证书,则可以使用此方法。我们将使用上面创建的 CA 向 IIS 托管的网站颁发证书。在颁发证书时,我们将提供一些重要信息,例如我们网站的主题名称(在我的案例中为 iistest.com)、证书配置文件类型、密钥算法和要使用的 CA。

  1. 导航到 OCI 控制台,然后单击身份和安全

  2. 证书下,单击证书,然后单击创建证书

  3. 区间下,选择要创建证书的区间。证书可以与 CA 存在于同一区间中,也可以存在于其他区间中。

  4. 证书类型下,要从同时管理证书的 OCI 证书 CA 发出证书,请单击由内部 CA 发布

  5. 输入证书的显示名称

  6. (可选)输入说明以帮助标识证书。

  7. (可选)要应用标记,请单击显示标记,然后单击下一步

  8. 输入主题信息,其中包括用于标识证书所有者的通用名称。根据证书的预期用途,主题可能会标识人员、组织或计算机端点。受试者信息还可以将 DNS 名称或 IP 地址作为受试者替代名称,证书持有人也可通过这些名称来知道。您可以使用通配符为多个域或子域名称颁发证书。在创建证书时指定通用名称和 DNS 名称(在 SAN 下)。(一些浏览器会忽略通用名称,并使用主题名称或 SAN 名称来评估主题信息。)

  9. (可选)要添加更多主题替代名称,请单击 + 另一个主题替代名称,选择地址类型,输入名称,然后单击下一步

  10. 根据证书的预期用途,从以下配置文件中选择证书配置文件类型。

    • TLS 服务器或客户机:由服务器或客户机提供用于 TLS/SSL 连接。

    • TLS 服务器:由用于 TLS/SSL 连接的服务器提供。

    • TLS 客户机:客户机在 TLS/SSL 连接期间提供。

    • TLS 代码符号:由程序提供以验证其签名。

    由于我们正在为服务器颁发证书,因此应在此处选择 TLS 服务器配置文件类型。

  11. 要更改颁发证书的 CA,请单击 Issuer Certificate Authority ,然后选择 CA。如有必要,单击更改区间,然后选择其他区间(如果 CA 与为证书选择的区间不同)。

  12. (可选)单击之前无效,然后输入证书不能用于验证其持有人身份的日期。如果未指定日期,则证书有效期将立即开始。值向上舍入到最近的秒。

  13. 单击之后无效,然后更改证书不再是其持有人身份的有效证明的日期。您必须指定至少晚于有效期开始日期一天的日期。日期不得超过签发 CA 的到期时间。也不能指定晚于 2037 年 12 月 31 日的日期。值向上舍入到最近的秒。通常,证书用于有效期的整个期间,除非发生需要撤销的情况。

  14. 对于密钥算法,请从以下选项中选择证书密钥对所需的算法和密钥长度组合。

    • RSA2048:Rivest-Shamir-Adleman (RSA) 2048 位密钥

    • RSA4096:RSA 4096 位密钥

    • ECDSA_P256:带有 P256 曲线 ID 的 ECDSA 密钥

    • ECDSA_P384:带有 P384 曲线 ID 的 ECDSA 密钥

  15. (可选)单击显示附加字段,然后在签名算法下,根据密钥选择以下签名算法之一,然后单击下一步

    • SHA256_WITH_RSA:具有 SHA-256 散列函数的 Rivest-Shamir-Adleman (RSA) 密钥

    • SHA384_WITH_RSA:具有 SHA-384 散列函数的 RSA 密钥

    • SHA512_WITH_RSA:具有 SHA-512 散列函数的 RSA 密钥

    • SHA256_WITH_ECDSA:具有 SHA-256 散列函数的 ECDSA 密钥

    • SHA384_WITH_ECDSA:具有 SHA-384 散列函数的 ECDSA 密钥

    • SHA512_WITH_ECDSA:具有 SHA-512 散列函数的 ECDSA 密钥

  16. 要配置证书的自动续订以避免使用中断,请为以下设置指定非零值,然后单击下一步

    • 续订间隔(天):续订证书的频率。

    • 提前续订期(天):在证书到期之前发生的续订天数。

      为了获得足够的灵活性,请在证书的有效期结束之前续订证书,并在发生故障时提前续订足够的时间。在服务成功续订之前过期的证书可能会导致服务中断。

      :证书将不会在 IIS 服务器上自动续订。您需要获取证书的新版本,并在证书过期时重新将其上载到 IIS 服务器。

  17. 查看所有信息,然后单击创建证书

  18. 创建证书后,我们需要创建证书的 .pem,然后将其安装在我们的 IIS 服务器上。要创建 .pem 文件,我们需要获取上面创建的证书的 cert.pem 和专用 key.pem。可以直接从 OCI 控制台从身份和安全证书证书查看内容获取 cert.pem 并下载证书 pemcertificate-chain-pem 的内容,并通过将两者的内容与顶部的 certificate-pem 和文件底部的 certificate-chain-pem 组合来创建单个文件。要获取私有密钥,可以使用我们自己的 OCI Cloud Shell 的 OCI CLI 并运行以下命令。

    oci certificates certificate-bundle get --certificate-id=ocid1.certificate.XXXXXXX --bundle-type=CERTIFICATE_CONTENT_WITH_PRIVATE_KEY
    
  19. 您需要在命令输出的数据部分下复制 private-key-pem 的内容并将其另存为 .pem 文件(如 private.pem)。一旦我们有 cert.pemprivate.pem 文件,我们可以使用 OpenSSL 生成 .pfx 文件。复制 private-key-pem 文件的内容时,可能需要删除 \n 字符,因为它会产生一些格式设置问题。

    :OCI CLI、OpenSSL 和许多其他工具预先安装在 OCI Cloud Shell 中,可用于轻松执行这些操作。

    私钥 .pem 文件应看起来与此类似:

    图像 12

  20. 可以使用以下命令抓取 .pem 文件。使用原生 OCI Cloud Shell 运行所有这些命令并为您的私有密钥提供安全密码。导入 .pem 时将需要此密码。

    openssl pkcs12 -inkey priv.pem -in cert.pem -export -out iis.pem
    

    需要将此 iis.pem 文件复制到 IIS 服务器。我们需要在 IIS 服务器上的本地计算机证书存储中导入此 iis.pem。我已经安装了 IIS 并创建了一个演示网站。导入证书后,我可以转到 IIS 上托管的网站并编辑站点绑定并选择已安装的证书。现在,我们准备使用 https(安全的 http)测试网站。

    图像 13

任务 4:使用安全 Http (https) 测试 IIS 托管网站

我们使用了一个基本的 Hello World 站点来展示此演示,并将根 CA 证书(可从 Certificate-chain-pem 导出)放置在我们用于访问此网站的客户端计算机上的本地计算机证书存储的 Trusted Root Certification Authority 文件夹中。这是因为 OCI 证书创建的 CA 是专用 CA,因此不受浏览器信任,因此我们需要在所有尝试访问网站的本地计算机上添加根 CA 和中间 CA(如果使用)。

图像 14

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心