已认证的源拉取

验证原点拉动是一项安全功能,有助于确保 IBM Cloud® Internet Services 与原点服务器之间的通信安全。 它使用相互 TLS ( mTLS ) 对 CIS 和源服务器进行身份验证,这样只有来自受信任的 IBM Cloud® Internet Services 的请求才能访问你的服务器。 这种设置可保护您的源服务器免受未经授权的访问,并增强网络应用程序的整体安全性。

IBM Cloud® Internet Services CIS 使用大多数网络服务器支持的 TLS 客户证书验证功能,在 与源网络服务器之间建立连接时出示 证书。CIS CIS 通过在源 Web 服务器上验证此证书,访问权仅限于 CIS 连接。

在使用网络应用程序防火墙(WAF)时,经过验证的来源拉取非常重要。 在你的起源网络服务器执行验证起源拉取后,CIS 以外的所有 HTTPS 请求都会被阻止到达你的起源。

您可以使用以下选项之一配置经过验证的原点拉取:

  • 使用 CIS 证书进行区域级别认证的源拉取
  • 区域级认证源拉取 (使用客户证书)
  • 按主机名认证源拉取 (使用客户证书)

客户机证书不会在到期时从 CIS 中删除,除非将删除或替换请求发送到 CIS API。 但是,如果您的源仅接受有效的客户机证书,那么会在您的源处删除请求。

已认证的源拉取在 SSL 方式 Off (不安全)Client-to-Edge 中不起作用。

使用 CIS 证书的区域级别已认证源拉取

该选项通过在区级使用 CIS 提供的证书对请求进行验证,从而确保从源服务器访问内容的安全性。

CIS 使用以下 CA 对已认证的源拉取服务的证书进行签名:

下载证书并将文件存储在源 Web 服务器上,例如,在 /path/to/origin-pull-ca.pem 中。

要启用已认证的源,请在区域上全局拉取:

  1. 在源网络服务器上安装证书,以验证所有连接。
  2. 通过 端到端灵活 配置 CIS。
  3. 配置源网络服务器以接受客户端证书。
  4. 使用 CIS CLI 启用经过验证的原点拉取。

使用自定义证书进行区级验证的原点拉取

该选项通过在区级使用客户上传的证书进行身份验证,实现从源服务器安全访问内容。

  1. 如果使用由 OpenSSL, 生成的 ECC 密钥,请先从证书文件中删除 -----BEGIN EC PARAMETERS-----...-----END EC PARAMETERS-----

  2. 在上传至 CIS 之前,确保证书和密钥符合以下格式:

    $ cat app_example_com.pem
    -----BEGIN CERTIFICATE-----
    MIIFJDCCBAygAwIBAgIQD0ifmj/Yi5Nz2gdUySbfzANBgkqhkiG9w0BAQsFADBN
    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
    ...
    SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O
    OeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7
    -----END CERTIFICATE-----
    
  3. 将行尾替换为字符串 \n:

    MYCERT="$(cat app_example_com.pem|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')" $ MYKEY="$(cat app_example_com.key|perl -pe 's/\r?\n/\\n/'| sed -e's/..$//')"
    
    echo $MYCERT -----BEGIN CERTIFICATE-----\nMIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/ 2gdUySbfzANBgkqhkiG9w0BAQsFADBN\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E...SzSHfXp5lnu/ 3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O\nOeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7\n-----END CERTIFICATE-----\n
    
  4. 构建有效内容:

    $ request_body=$(< <(cat <<EOF { "certificate": "$MYCERT", "private_key": "$MYKEY" } } EOF ))

  5. CIS CLI 上传客户端证书和私钥。

  6. CIS CLI 启用经过验证的原点拉取。

使用客户证书,按主机名验证原点拉取

该选项允许通过按主机名使用客户证书验证请求,从而确保从源服务器访问内容的安全性。

启用每个主机名的验证源拉动后,所有指向指定主机名的代理流量都会在源 Web 服务器上进行验证。 您可以使用自己的公用密钥基础结构中的客户机证书来认证来自 CIS的连接。

要在 CIS中上载客户机证书:

  1. 如果使用由 OpenSSL, 生成的 ECC 密钥,请先从证书文件中删除 -----BEGIN EC PARAMETERS-----...-----END EC PARAMETERS-----

  2. 在将证书上传到 CIS 之前,请确保证书采用以下格式。

    $ cat app_example_com.pem
    -----BEGIN CERTIFICATE-----
    MIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/2gdUySbfzANBgkqhkiG9w0BAQsFADBN
    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
    ...
    SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O
    OeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7
    -----END CERTIFICATE-----
    
  3. 将行尾替换为字符串 \n:

    MYCERT="$(cat app_example_com.pem|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')" $ MYKEY="$(cat app_example_com.key|perl -pe 's/\r?\n/\\n/'|sed -e's/..$//')"
    
    echo $MYCERT -----BEGIN CERTIFICATE-----\nMIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/2gdUySbfzANBgkqhkiG9w0BAQsFADBN\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E...SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O\nOeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7\n-----END CERTIFICATE-----\n
    
  4. 构建有效内容:

    $ request_body=$(< <(cat <<EOF { "certificate": "$MYCERT", "private_key": "$MYKEY" } } EOF ))

  5. CIS CLI 上传客户端证书和私钥。

  6. 通过 CIS CLI 在指定主机名上启用经过验证的原点拉取。 将客户证书链接到特定主机名。

在不停机的情况下替换客户机证书

对于主机名:

  1. 上传新证书。
  2. 链接新的证书 ID 和主机名以及已启用的值。

对于全局:

  1. 上传新证书。
  2. 检查新证书是否处于激活状态。
  3. 证书激活后,删除旧证书。

同时应用其他客户机证书 (在区域和主机名级别)

  1. 按照“区级已验证来源拉动”部分的步骤上传证书。
  2. 按照“使用客户证书拉动每个主机名验证的起源”部分中的步骤上传多个证书。

在 Apache 和 NGINX 上安装

使用以下指示信息为 NGINX 或 Apache 源 Web 服务器配置 TLS 已认证的源拉取。

设置 Apache

使用“端到端”灵活性,并通过以下步骤更新源网络服务器 SSL 配置。

  1. 下载经认证的原产地拉动证书 (origin-pull-ca.pem)。

  2. 将证书存储在源网络服务器上的一个文件中,例如 /path/to/origin-pull-ca.pem

  3. 将以下行添加到源 Web 服务器的 SSL 配置中:

    SSLVerifyClient require
    SSLVerifyDepth 1
    SSLCACertificateFile /path/to/origin-pull-ca.pem
    

设置 NGINX

使用“端到端”灵活性,并通过以下步骤更新源网络服务器 SSL 配置。

  1. 下载经认证的原产地拉动证书 (origin-pull-ca.pem)。

  2. 将证书存储在源网络服务器上的一个文件中,例如 /etc/nginx/certs/cloudflare.crt

  3. 将以下行添加到源 Web 服务器的 SSL 配置中:

    ssl_client_certificate /etc/nginx/certs/cloudflare.crt;
    ssl_verify_client on;