已认证的源拉取
验证原点拉动是一项安全功能,有助于确保 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 中。
要启用已认证的源,请在区域上全局拉取:
使用自定义证书进行区级验证的原点拉取
该选项通过在区级使用客户上传的证书进行身份验证,实现从源服务器安全访问内容。
-
如果使用由 OpenSSL, 生成的 ECC 密钥,请先从证书文件中删除
-----BEGIN EC PARAMETERS-----...-----END EC PARAMETERS-----。 -
在上传至 CIS 之前,确保证书和密钥符合以下格式:
$ cat app_example_com.pem -----BEGIN CERTIFICATE----- MIIFJDCCBAygAwIBAgIQD0ifmj/Yi5Nz2gdUySbfzANBgkqhkiG9w0BAQsFADBN MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E ... SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O OeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7 -----END CERTIFICATE----- -
将行尾替换为字符串
\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 -
构建有效内容:
$ request_body=$(< <(cat <<EOF { "certificate": "$MYCERT", "private_key": "$MYKEY" } } EOF )) -
从 CIS CLI 上传客户端证书和私钥。
-
从 CIS CLI 启用经过验证的原点拉取。
使用客户证书,按主机名验证原点拉取
该选项允许通过按主机名使用客户证书验证请求,从而确保从源服务器访问内容的安全性。
启用每个主机名的验证源拉动后,所有指向指定主机名的代理流量都会在源 Web 服务器上进行验证。 您可以使用自己的公用密钥基础结构中的客户机证书来认证来自 CIS的连接。
要在 CIS中上载客户机证书:
-
如果使用由 OpenSSL, 生成的 ECC 密钥,请先从证书文件中删除
-----BEGIN EC PARAMETERS-----...-----END EC PARAMETERS-----。 -
在将证书上传到 CIS 之前,请确保证书采用以下格式。
$ cat app_example_com.pem -----BEGIN CERTIFICATE----- MIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/2gdUySbfzANBgkqhkiG9w0BAQsFADBN MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E ... SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O OeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7 -----END CERTIFICATE----- -
将行尾替换为字符串
\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 -
构建有效内容:
$ request_body=$(< <(cat <<EOF { "certificate": "$MYCERT", "private_key": "$MYKEY" } } EOF )) -
从 CIS CLI 上传客户端证书和私钥。
-
通过 CIS CLI 在指定主机名上启用经过验证的原点拉取。 将客户证书链接到特定主机名。
在不停机的情况下替换客户机证书
对于主机名:
- 上传新证书。
- 链接新的证书 ID 和主机名以及已启用的值。
对于全局:
- 上传新证书。
- 检查新证书是否处于激活状态。
- 证书激活后,删除旧证书。
同时应用其他客户机证书 (在区域和主机名级别)
- 按照“区级已验证来源拉动”部分的步骤上传证书。
- 按照“使用客户证书拉动每个主机名验证的起源”部分中的步骤上传多个证书。
在 Apache 和 NGINX 上安装
使用以下指示信息为 NGINX 或 Apache 源 Web 服务器配置 TLS 已认证的源拉取。
设置 Apache
使用“端到端”灵活性,并通过以下步骤更新源网络服务器 SSL 配置。
-
下载经认证的原产地拉动证书 (
origin-pull-ca.pem)。 -
将证书存储在源网络服务器上的一个文件中,例如
/path/to/origin-pull-ca.pem。 -
将以下行添加到源 Web 服务器的 SSL 配置中:
SSLVerifyClient require SSLVerifyDepth 1 SSLCACertificateFile /path/to/origin-pull-ca.pem
设置 NGINX
使用“端到端”灵活性,并通过以下步骤更新源网络服务器 SSL 配置。
-
下载经认证的原产地拉动证书 (
origin-pull-ca.pem)。 -
将证书存储在源网络服务器上的一个文件中,例如
/etc/nginx/certs/cloudflare.crt。 -
将以下行添加到源 Web 服务器的 SSL 配置中:
ssl_client_certificate /etc/nginx/certs/cloudflare.crt; ssl_verify_client on;