已认证的源拉取
源 Web 服务器通过已认证的源拉取来验证 Web 请求是否来自 IBM Cloud® Internet Services。CIS 使用 TLS 客户机证书认证 (这是大多数 Web 服务器支持的功能) 在建立 CIS 与源 Web 服务器之间的连接时提供 CIS 证书。 通过在源 Web 服务器上验证此证书,访问权仅限于 CIS 连接。
使用 Web 应用程序防火墙 (WAF) 时,已认证的源拉取很重要。 原点网络服务器执行验证原点拉取后,CIS 以外的所有 HTTPS 请求都会被阻止到达原点。
通过使用下列其中一个选项来配置已认证的源拉取:
- 使用 CIS 证书进行区域级别认证的源拉取
- 区域级认证源拉取 (使用客户证书)
- 按主机名认证源拉取 (使用客户证书)
客户机证书不会在到期时从 CIS 中删除,除非将删除或替换请求发送到 CIS API。 但是,如果您的源仅接受有效的客户机证书,那么会在您的源处删除请求。
已认证的源拉取在 SSL 方式 Off (不安全) 或 Client-to-Edge 中不起作用。
使用 CIS 证书的区域级别已认证源拉取
CIS 使用以下 CA 对已认证的源拉取服务的证书进行签名:
下载证书并将文件存储在源 Web 服务器上,例如,在 /path/to/origin-pull-ca.pem
中。
要启用已认证的源,请在区域上全局拉取:
带客户证书的区域级别已认证源拉取
-
如果使用 OpenSSL, 请先从证书文件中删除
-----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, 请先从证书文件中删除
-----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 对指定主机名启用已认证的源拉取。 将客户机证书链接到特定主机名
在不停机的情况下替换客户机证书
对于主机名:
- 上载新证书
- 链接新的证书标识和主机名以及已启用的值
对于全局:
- 上载新证书
- 检查新证书是否处于“活动”状态
- 证书处于活动状态后,删除旧证书
同时应用其他客户机证书 (在区域和主机名级别)
- 通过执行 区域级别已认证的源拉取 部分中的步骤来上载证书
- 通过执行 按主机名认证的源拉取(使用客户证书) 部分中的步骤来上载多个证书
在 Apache 和 NGINX 上安装
使用以下指示信息为 NGINX 或 Apache 源 Web 服务器配置 TLS 已认证的源拉取。
设置 Apache
使用 端到端灵活,并使用以下步骤更新源 Web 服务器 SSL 配置。
-
下载已认证的源拉取证书 (
origin-pull-ca.pem
) -
将证书存储在源 Web 服务器上的文件中,例如在
/path/to/origin-pull-ca.pem
中 -
将以下行添加到源 Web 服务器的 SSL 配置中:
SSLVerifyClient require SSLVerifyDepth 1 SSLCACertificateFile /path/to/origin-pull-ca.pem
设置 NGINX
使用 端到端灵活,并使用以下步骤更新源 Web 服务器 SSL 配置。
-
下载已认证的源拉取证书 (
origin-pull-ca.pem
) -
将证书存储在源 Web 服务器上的文件中,例如在
/etc/nginx/certs/cloudflare.crt
中 -
将以下行添加到源 Web 服务器的 SSL 配置中:
ssl_client_certificate /etc/nginx/certs/cloudflare.crt; ssl_verify_client on;