跳转到内容
搜索文档

手动安装证书

最后更新 查看 MarkdownAgent 设置

如果您的设备不支持通过 Cloudflare One Client 安装证书,您可以手动安装 Cloudflare 证书。您必须将该证书同时添加到系统钥匙串单个应用程序存储区。对于要接受 HTTP 过滤的每个新设备,都必须执行这些步骤。

Zero Trust 仅会使用设置为 **Available(可用)**和 In-Use(使用中)的已安装证书来检查流量。

若要手动安装证书,您必须:

  1. 下载并验证 Cloudflare 证书。
  2. 在操作系统的证书存储区中安装该证书。
  3. 如果目标应用程序不接受来自操作系统的证书,您必须在应用程序的证书存储区中安装该证书。

1. 下载 Cloudflare 根证书

首先,生成并下载 Cloudflare 证书。该证书提供 .pem.crt 两种文件格式。某些应用程序要求证书必须是特定的文件类型,因此请确保下载最适合您使用场景的文件。

  1. Cloudflare 仪表板中,前往 Zero Trust > Traffic policies(流量策略) > Traffic settings(流量设置)
  2. 选择Certificates(证书)
  3. 选择您要下载的证书。
  4. 选择More actions(更多操作)
  5. 根据您需要的格式,选择 Download .pem(下载 .pem) 和/或 Download .crt(下载 .crt)

或者,您也可以使用 Cloudflare One Client 下载并安装证书。Cloudflare One Client 将把证书添加到设备的系统证书存储区中,路径为 installed_certs/<certificate_id>.pem

2. 验证下载的证书

要验证您的下载,请使用终端检查下载的证书哈希是否与 **Certificate thumbprint(证书指纹)**下所列的指纹一致。例如:

SHA1

SHA1 .crt 示例sh
openssl x509 -noout -fingerprint -sha1 -inform der -in <certificate.crt>
SHA1 Fingerprint=BB:2D:B6:3D:6B:DE:DA:06:4E:CA:CB:40:F6:F2:61:40:B7:10:F0:6C
SHA1 .pem 示例sh
openssl x509 -noout -fingerprint -sha1 -inform pem -in <certificate.pem>
SHA1 Fingerprint=BB:2D:B6:3D:6B:DE:DA:06:4E:CA:CB:40:F6:F2:61:40:B7:10:F0:6C

SHA256

SHA256 .crt 示例sh
openssl x509 -noout -fingerprint -sha256 -inform der -in <certificate.crt>
sha256 Fingerprint=F5:E1:56:C4:89:78:77:AD:79:3A:1E:83:FA:77:83:F1:9C:B0:C6:1B:58:2C:2F:50:11:B3:37:72:7C:62:3D:EF
SHA256 .pem 示例sh
openssl x509 -noout -fingerprint -sha256 -inform pem -in <certificate.pem>
sha256 Fingerprint=F5:E1:56:C4:89:78:77:AD:79:3A:1E:83:FA:77:83:F1:9C:B0:C6:1B:58:2C:2F:50:11:B3:37:72:7C:62:3D:EF

3.(可选)转换证书

某些应用程序要求证书格式为 .cer 文件类型。您可以使用 OpenSSL 转换下载的证书:

  1. 安装 OpenSSL
  2. 下载 .pem 格式的 Cloudflare 证书
  3. 在终端中,将证书转换为 .cer 文件类型的 DER 格式:
    openssl x509 -inform PEM -in ~/Downloads/certificate.pem -outform DER -out ~/Downloads/certificate.cer
  1. 安装适用于 Windows 的 OpenSSL
  2. 下载 .pem 格式的 Cloudflare 证书
  3. 在 PowerShell 终端中,将证书转换为 .cer 文件类型的 DER 格式:
    openssl x509 -inform PEM -in "$HOME\Downloads\certificate.pem" -outform DER -out "$HOME\Downloads\certificate.cer"

4. 将证书添加到操作系统

如果您是在桌面设备上部署 Cloudflare 证书,请使用使用 Cloudflare One Client 安装证书方法。

移动设备需要根据以下说明进行手动安装。

macOS

在 macOS 中,您可以选择要安装证书的钥匙串。每个钥匙串会影响哪些用户将受到信任根证书的影响。

钥匙串 访问范围
login 当前登录的用户
Local Items 可以访问缓存的 iCloud 密码的用户
System 系统上的所有用户

要在 macOS 中安装 Cloudflare 证书,您可以使用“钥匙串访问”(Keychain Access)应用程序或终端。这两种方法都需要您下载 .crt 格式的证书

  1. 下载 Cloudflare 证书。
    1. 在 Keychain Access 中打开 .crt 文件。如果提示,请输入您的本地密码。
    2. Keychain(钥匙串) 中,选择适合您需求的访问选项,然后选择 Add(添加)
    3. 在证书列表中,找到新安装的证书。Keychain Access 会将此证书标记为不受信任。右键单击该证书并选择 Get Info(获取信息)
    4. 选择 Trust(信任)。在 When using this certificate(使用此证书时) 下,选择 Always Trust(始终信任)

根证书现已安装并可以使用。

  1. 下载 Cloudflare 证书。
  2. 打开 Terminal。
  3. 将证书添加到您的钥匙串:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain <path-to-certificate.crt>

此钥匙串将允许系统上的所有用户访问该证书。如果您想将证书安装到其他钥匙串,请将 System.keychain 替换为该钥匙串的名称。

  1. 更新 OpenSSL CA 存储区以包含 Cloudflare 证书:
echo | sudo tee -a /etc/ssl/cert.pem < certificate.pem

根证书现已安装并可以使用。

Windows

Windows 提供了两个安装证书的位置,每个位置都会影响哪些用户将受到信任根证书的影响。

存储位置 访问范围
Current User Store 当前登录的用户
Local Machine Store 系统上的所有用户
  1. 下载 Cloudflare 证书
  2. 右键单击证书文件。
  3. 选择 Open(打开)。如果出现安全警告,请选择 Open(打开) 以继续。
  4. 将显示 Certificate(证书) 窗口。选择 Install Certificate(安装证书)
  5. 现在选择一个存储位置。如果出现安全警告,请选择 Yes(是) 以继续。
  6. 在下一个屏幕上,选择 Browse(浏览)
  7. 在列表中,选择 Trusted Root Certification Authorities(受信任的根证书颁发机构) 存储区。
  8. 选择 OK(确定),然后选择 Finish(完成)

根证书现已安装并可以使用。

Linux

安装根证书的位置因 Linux 发行版而异。请按照您发行版的特定说明进行操作。

以下步骤适用于基于 Debian 的系统,例如 Debian、Ubuntu 和 Kali Linux。

  1. 下载 .pem 格式的 Cloudflare 证书

  2. 安装 ca-certificates 软件包。

    sudo apt-get install ca-certificates
  3. 将证书复制到系统中,并将文件扩展名更改为 .crt

    sudo cp certificate.pem /usr/share/ca-certificates/certificate.crt
  4. 导入证书。

    sudo dpkg-reconfigure ca-certificates

以下步骤适用于基于 Red Hat 的系统,例如 CentOS 和 Red Hat Enterprise Linux (RHEL)。

  1. 下载 .crt.pem 格式的 Cloudflare 证书

  2. 安装 ca-certificates 软件包。

    sudo dnf install ca-certificates
  3. 将这两个证书复制到信任存储区中。

    sudo cp certificate.crt certificate.pem /etc/pki/ca-trust/source/anchors
  4. 导入证书。

    sudo update-ca-trust

NixOS 不使用系统证书存储区进行自更新,而是依赖于在 ~/.nix-profile/etc/ssl/certs 中找到的或在运行时由 NIX_SSL_CERT_FILE 提供的证书。

iOS

  1. 在 Safari 中,下载 .pem 格式的 Cloudflare 证书
  2. 打开“文件”并前往Recents(最近项目)
  3. 找到并打开下载的证书文件。将显示一条消息以确认已下载描述文件。选择 Close(关闭)
  4. 打开 Settings(设置)。选择 Apple 账户信息下方的**Profile Downloaded(已下载描述文件)**部分。或者,前往 General(通用) > VPN & Device Management(VPN 与设备管理),然后选择 Gateway CA - Cloudflare Managed G1 描述文件。
  5. 选择 Install(安装)。如果 iOS 设备受密码保护,系统会提示您输入密码。
  6. 将出现证书警告。选择 Install(安装)。如果出现第二个提示,请再次选择 Install(安装)
  7. 将显示 Profile Installed(已安装描述文件) 屏幕。选择 Done(完成)。证书现已安装。然而,在使用它之前,它必须得到设备的信任。
  8. Settings(设置) 中,前往 General(通用) > About(关于本机) > Certificate Trust Settings(证书信任设置)。已安装的根证书将显示在 Enable Full Trust For Root Certificates(针对根证书启用完全信任) 下方。
  9. 开启 Cloudflare 证书。
  10. 将出现一条安全警告消息。选择 Continue(继续)

根证书现已安装并可以使用。

Android

  1. 下载 Cloudflare 证书
  2. Settings(设置) 中,前往 Security(安全) > Advanced(高级) > Encryption & credentials(加密与凭据) > Install a certificate(安装证书)
  3. 选择 CA certificate(CA 证书)
  4. 选择 Install anyway(仍然安装)
  5. 验证您的身份。
  6. 选择您要安装的证书文件。

根证书现已安装并可以使用。

ChromeOS

ChromeOS 设备使用不同的方法来存储和部署根证书。证书可能会在 **VPN and apps(VPN 和应用)**或 **CA certificate(CA 证书)**设置下。按照适合您设备的步骤进行操作。

  1. 下载 Cloudflare 证书,格式为 .crt

  2. 前往 Settings(设置) > Apps(应用) > Google Play Store

  3. 选择 Manage Android preferences(管理 Android 偏好设置)

  4. 前往 Security & location > Credentials > Install from SD card

  1. 在文件打开对话框中,选择您下载的 certificate.crt file。选择 Open(打开)
  2. 输入一个用于识别证书的名称。确保将 **Credential use(凭据用途)**设置为 VPN and apps(VPN 和应用)
  3. 选择 OK(确定)
  1. 下载 Cloudflare 证书,格式为 .crt

  2. 前往 Settings(设置) > Apps(应用) > Google Play Store

  3. 选择 Manage Android preferences(管理 Android 偏好设置)

  4. 前往 Security & location > Credentials > Install a certificate > CA certificate

  1. 当收到隐私警告提示时,选择 Install anyway(仍然安装)
  2. 在文件打开对话框中,选择您下载的 certificate.crt 文件。选择 Open(打开)
  3. 要验证证书是否已安装并受信任,请前往 Settings(设置) > Apps(应用) > Google Play Store(Google Play 商店) > Manage Android preferences(管理 Android 首选项) > Security(安全) > Credentials(凭据) > Trusted credentials(受信任的凭据) > User(用户)

在向 ChromeOS 添加 Cloudflare 证书后,您可能还需要在您的浏览器中安装该证书

5. 将证书添加到应用程序

某些应用程序不使用系统证书存储区,因此需要直接将证书添加到应用程序中。对于类似下方列出的某些应用程序,您将需要遵循本节中的步骤,并将 Cloudflare 证书添加到该应用程序中,以便 TLS 解密正常运行。

如果您没有更新应用程序以信任 Cloudflare 证书,该应用程序将拒绝连接,并且您将收到不受信任的证书错误。

以下所有应用程序都需要首先按照上述说明下载 Cloudflare 证书。在 macOS 上,系统钥匙串数据库文件的默认路径为 /Library/Keychains/System.keychain。在 Windows 上,默认路径为 \Cert:\CurrentUser\Root

浏览器

浏览器可能会使用它们自己的证书存储区或依赖操作系统证书存储区。

Chrome

Chrome 113 之前的版本在 macOS 和 Windows 上使用操作系统根存储区。macOS 和 Windows 上的 Chrome 113 及更高版本 —— 以及 Linux 和 ChromeOS 上的所有版本 —— 使用 Chrome 内部信任存储区

手动向 Chrome 安装 Cloudflare 证书:

  1. 下载 .pem 格式的 Cloudflare 证书
  2. 在 Chrome 中,前往 Settings(设置) > Privacy and security(隐私和安全) > Security(安全)
  3. 选择 Manage certificates(管理证书)
  4. 前往 Authorities(授权机构)。选择 Import(导入)
  5. 在文件打开对话框中,选择您下载的 certificate.pem 文件。
  6. 在对话框中,开启 Trust this certificate for identifying websites(信任此证书以识别网站)Trust this certificate for identifying email users(信任此证书以识别电子邮件用户)Trust this certificate for identifying software makers(信任此证书以识别软件制造商)。选择 OK(确定)
  7. 要验证证书是否已安装并受信任,请在 Authorities(授权机构) 中找到它。

有关为组织安装 Cloudflare 证书的信息,请参阅 Google 适用于 Chrome 浏览器企业版和教育版文档

Firefox

手动向 Firefox 安装 Cloudflare 证书:

  1. 下载 .pem 格式的 Cloudflare 证书
  2. 在 Firefox 中,前往 Settings(设置) > Privacy & Security(隐私与安全)
  3. Security(安全) 中,选择 Certificates(证书) > View Certificates(查看证书)
  4. Authorities(证书颁发机构) 中,选择 Import(导入)
  5. 在文件打开对话框中,选择您下载的 certificate.pem 文件。
  6. 在对话框中,开启 Trust this CA to identify websites(信任此 CA 以识别网站)Trust this CA to identify email users(信任此 CA 以识别电子邮件用户)。选择 OK(确定)
  7. 要验证证书是否已安装并受信任,请在 Cloudflare 下的表格中找到它。

有关为组织安装 Cloudflare 证书的信息,请参阅这篇 Mozilla 支持文章

移动设备管理(MDM)软件

Zero Trust 与几个移动设备管理(MDM)软件合作伙伴集成,以跨设备部署 Cloudflare One Client。

Microsoft Intune

在 Microsoft Intune 中上传并部署 Cloudflare 证书:

  1. 下载并将 Cloudflare 证书转换.cer 文件类型的 DER 格式。
  2. 在 Microsoft Intune 中,使用您转换后的证书创建受信任的证书描述文件

有关更多信息,请参阅 Microsoft 文档

Jamf Pro

在 Jamf Pro 中上传并部署 Cloudflare 证书:

  1. 下载并将 Cloudflare 证书转换.cer 文件类型的 DER 格式。
  2. 在 Jamf Pro 中,前往 Computers(计算机) > **Configuration Profiles(配置描述文件)**以创建计算机配置描述文件,或者前往 Devices(设备) > **Configuration Profiles(配置描述文件)**以创建移动设备配置描述文件。选择 New(新建)
  3. 为描述文件添加名称和描述。
  4. 选择您是希望 Jamf 自动安装证书还是通过自助服务安装,以及是希望为单个用户还是系统上的所有用户安装证书。
  5. 选择 Add(添加) > Certificate(证书)。选择证书文件。
  6. 取消勾选 Allow export from keychain(允许从钥匙串导出)
  7. 选择 Scope(范围),然后选择要向其部署证书的设备或组。
  8. 选择 Save(保存)

有关更多信息,请参阅 Jamf Pro 文档

Kandji

在 Kandji 中上传并部署 Cloudflare 证书:

  1. 下载 .crt 格式的 Cloudflare 证书
  2. 在 Kandji 中,将证书上传为 PKCS #1 格式的证书。

Hexnode

在 Hexnode 中上传并部署 Cloudflare 证书:

  1. 下载 .pem 格式的 Cloudflare 证书
  2. 在 Hexnode 中,按照说明将证书添加到 macOSiOS 和/或 Android 设备中。

JumpCloud

在 JumpCloud 中上传并部署 Cloudflare 证书:

  1. 下载 .pem 格式的 Cloudflare 证书
  2. 在 JumpCloud 中,上传证书
  3. 配置条件访问策略以在设备上部署证书。

编程语言和运行时

编程语言运行时通常会维护它们自己的证书存储区,或使用特定于语言的证书管理工具。

Python

取决于您安装的 Python 版本和您的配置,您可能需要使用 pythonpython3 命令。如果您使用虚拟环境,您需要在每个虚拟环境中重复以下步骤。

在 Windows 上使用 Python 安装证书的命令会自动包含 pipcertifi(用于证书验证的默认证书包)。

  1. 下载 .crt 格式的 Cloudflare 证书
  2. 在 PowerShell 终端中,安装 certifi 软件包:
    python -m pip install certifi
  3. 确定 Python CA 存储区路径:
    $CERT_PATH = python -c "import certifi; print(certifi.where())"
  4. 更新证书包以包含 Cloudflare 证书:
    gc "$env:USERPROFILE\Downloads\certificate.crt" | ac $CERT_PATH
  5. (可选)通过将系统变量添加到 PowerShell 配置文件中,将其配置为指向该 CA 存储区:
    [System.Environment]::SetEnvironmentVariable('CERT_PATH', $CERT_PATH, 'Machine')
    [System.Environment]::SetEnvironmentVariable('SSL_CERT_FILE', $CERT_PATH, 'Machine')
    [System.Environment]::SetEnvironmentVariable('REQUESTS_CA_BUNDLE', $CERT_PATH, 'Machine')
  6. 重启您的终端。
  1. 下载 .pem 格式的 Cloudflare 证书
  2. 在终端中,安装 certifi 软件包:
    python -m pip install certifi
  3. 通过运行以下命令,将 Cloudflare 证书追加到此 CA 存储区中:
    echo | cat - certificate.pem >> $(python -m certifi)
  4. (可选)通过将系统变量添加到您的 shell 配置文件(例如 ~/.zshrc~/.bash_profile)中,将其配置为指向该 CA 存储区。例如:
    echo 'export CERT_PATH=$(python -c "import certifi; print(certifi.where())")
    export SSL_CERT_FILE=${CERT_PATH}
    export REQUESTS_CA_BUNDLE=${CERT_PATH}' >> ~/.zshrc
  5. 重启您的终端。

Java

根据包含 Java 的不同安装或应用程序,Java 可能有多个证书密钥库位置。取决于您的 Java 虚拟机(JVM)安装情况,您可能需要为每个实例都安装证书。您可能还需要手动配置每个 Java 应用程序以使用并信任该证书。

要在系统 JVM 中安装 Cloudflare 根证书,请遵循适用于您操作系统的步骤。这些步骤需要您下载 .pem 格式的证书

  1. 安装 OpenSSL

  2. 在终端中,为 Java 格式化 Cloudflare 证书。

    openssl x509 -in Cloudflare_CA.pem -inform pem -out Cloudflare_CA.der -outform der
  3. 将转换后的证书导入 Java 密钥库中。

    sudo $JAVA_HOME/bin/keytool -import -trustcacerts -alias 'Cloudflare Root CA' -file Cloudflare_CA.der -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt 2>&1
  4. 重启所有 Java 实例。

  1. 安装 适用于 Windows 的 OpenSSL

  2. 在管理员权限的 PowerShell 终端中,为 Java 格式化 Cloudflare 证书。

    openssl x509 -in Cloudflare_CA.pem -inform pem -out Cloudflare_CA.der -outform der
  3. 将转换后的证书导入 Java 密钥库中。

    "%JAVA_HOME%\bin\keytool" -import -trustcacerts -alias "Cloudflare Root CA" -file Cloudflare_CA.der -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -noprompt
  4. 重启所有 Java 实例。

Ruby

要在 RubyGems 中信任 Cloudflare 根证书,请遵循适用于您操作系统的步骤。这些步骤需要您下载 .pem 格式的证书

  1. 安装 OpenSSL

  2. 在终端中,为 Java 格式化 Cloudflare 证书。

    openssl x509 -in ~/Downloads/certificate.pem -out ~/Downloads/ruby-root-ca.crt
  3. 在您的主文件夹中创建一个 RubyGems 证书目录。

    mkdir -p ~/.gem/ssl
  4. 将 Cloudflare 证书复制到您的 RubyGems 证书存储区中。

    cp ~/Downloads/ruby-root-ca.crt ~/.gem/ssl/rubygems.org.pem
  5. 配置 RubyGems 以使用该证书。

    gem sources --add-trusted-cert ~/.gem/ssl/rubygems.org.pem

    或者,将以下行添加到位于 ~/.gemrc 的 RubyGems 配置文件中,以全局信任该证书:

    :ssl_cert: ~/.gem/ssl/rubygems.org.pem
  6. 重启所有终端会话。

  1. 安装 适用于 Windows 的 OpenSSL

  2. 在 PowerShell 终端中,为 Java 格式化 Cloudflare 证书。

    openssl x509 -in %UserProfile%\Downloads\certificate.pem -out %UserProfile%\Downloads\ruby-root-ca.crt
  3. 在您的主文件夹中创建一个 RubyGems 证书目录。

    mkdir -Force "$env:USERPROFILE\.gem\ssl"
  4. 将 Cloudflare 证书复制到您的 RubyGems 证书存储区中。

    Copy-Item "$env:USERPROFILE\Downloads\ruby-root-ca.crt" "$env:USERPROFILE\.gem\ssl\rubygems.org.pem"
  5. 配置 RubyGems 以使用该证书。

    gem sources --add-trusted-cert "$env:USERPROFILE\.gem\ssl\rubygems.org.pem"

    或者,将以下行添加到位于 $HOME\.gemrc 的 RubyGems 配置文件中,以全局信任该证书:

    :ssl_cert: C:/Users/<username>/.gem/ssl/rubygems.org.pem
  6. 重启所有终端会话。

Rust

在大多数平台上,Rust 的包管理器 Cargo 默认使用系统证书存储区。但在某些情况下,您可能需要显式配置它。

  1. 下载 .pem 格式的 Cloudflare 证书
  2. CARGO_HTTP_CAINFO 环境变量设置为指向该证书。在 PowerShell 中:
    [System.Environment]::SetEnvironmentVariable('CARGO_HTTP_CAINFO', "$HOME\Downloads\certificate.pem", 'User')
  3. 重启您的终端。

或者,您可以在位于 %USERPROFILE%\.cargo\config.toml 的 Cargo 配置文件中进行配置:

[http]
cainfo = "C:\\Users\\<username>\\Downloads\\certificate.pem"
  1. 下载 .pem 格式的 Cloudflare 证书
  2. 通过将 CARGO_HTTP_CAINFO 环境变量添加到您的 shell 配置文件(例如 ~/.zshrc~/.bash_profile)中来设置它:
    export CARGO_HTTP_CAINFO="$HOME/Downloads/certificate.pem"
  3. 重启您的终端。

或者,您可以在位于 ~/.cargo/config.toml 的 Cargo 配置文件中进行配置:

[http]
cainfo = "/path/to/certificate.pem"

开发工具和包管理器

开发工具和包管理器通常需要进行证书配置,以确保安全的包下载和仓库访问。

Git

  1. 打开 PowerShell。

  2. 运行以下命令:

    git config -l

    此命令将输出:

    core.symlinks=false
    core.autocrlf=true
    core.fscache=true
    color.diff=auto
    color.status=auto
    color.branch=auto
    color.interactive=true
    help.format=html
    rebase.autosquash=true
    http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
    http.sslbackend=openssl
    diff.astextplain.textconv=astextplain
    filter.lfs.clean=git-lfs clean -- %f
    filter.lfs.smudge=git-lfs smudge -- %f
    filter.lfs.process=git-lfs filter-process
    filter.lfs.required=true
    credential.helper=manager
  3. http.sslcainfo 定义了 CA 证书存储区。要将 Cloudflare 证书追加到 CA 证书包,请更新 http.sslcainfo

    gc .\certificate.pem | ac $(git config --get http.sslcainfo)

要配置 Git 信任 Cloudflare 证书,请运行以下命令:

git config --global http.sslcainfo [PATH_TO_CLOUDFLARE_CERT]

npm

  1. 下载 .pem 格式的 Cloudflare 证书
  2. 设置 cafile 配置以使用 Cloudflare 证书:
    npm config set cafile [PATH_TO_CLOUDFLARE_CERT.pem]

在某些系统上,您可能需要在您的路径/导出列表中进行如下设置:

export NODE_EXTRA_CA_CERTS='[PATH_TO_CLOUDFLARE_CERT.pem]'

PHP Composer

以下命令将设置 composer.json 内部的 cafile 配置以使用 Cloudflare 根证书。请确保下载了 .pem 文件类型的证书。

composer config cafile [PATH_TO_CLOUDFLARE_CERT.pem]

或者,您可以将此内容手动添加到您的 composer.json 文件中的 config 键下。

Docker

要安装可在 Docker 容器中使用的证书:

  1. 下载 .pem 格式的 Cloudflare 证书

  2. 在您的 Docker 项目中创建一个用于存放证书的目录:

    cd docker-project
    mkdir certs
    mv /path/to/downloaded/certificate.pem certs/
  3. 验证证书是否已正确移动到该目录。您的项目应具有以下结构:

    docker-project/
    ├── Dockerfile
    └── certs/
        └── certificate.pem
  4. 将证书添加到您的 Docker 镜像中:

    要将证书添加到您的 Dockerfile 中以便在构建过程中安装它:

    1. 将证书安装指示添加到您的 Dockerfile 中。例如:

      Red Hat-based imagesdocker
      FROM registry.access.redhat.com/ubi9/ubi:latest
      # Or FROM centos:7 or FROM fedora:38
      
      # Install necessary certificates package
      RUN dnf install -y ca-certificates
      
      # Copy and add Cloudflare root certificate
      COPY certs/certificate.pem /etc/pki/ca-trust/source/anchors/certificate.crt
      RUN update-ca-trust extract
      Debian-based imagesdocker
      FROM debian:12
      # Or FROM ubuntu:22.04
      
      # Install necessary certificates package
      RUN apt-get update && apt-get install -y ca-certificates
      
      # Copy and add Cloudflare root certificate
      COPY certs/certificate.pem /usr/local/share/ca-certificates/certificate.crt
      RUN update-ca-certificates
      Alpine-based imagesdocker
      FROM alpine:3.18
      
      # Install necessary certificates package
      RUN apk add --no-cache ca-certificates
      
      # Copy and add Cloudflare root certificate
      COPY certs/certificate.pem /usr/local/share/ca-certificates/certificate.crt
      RUN update-ca-certificates
    2. 构建 Docker 镜像:

      docker build -t <your-container-name> .
    3. 验证证书是否已安装:

      Red Hat-based imagessh
      docker run --rm your-image-name sh -c "cat /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem | grep Cloudflare"
      Debian and Alpine-based imagessh
      docker run --rm your-image-name sh -c "cat /etc/ssl/certs/certificate.pem"

    要将证书添加到您的 Docker Compose 文件中以便在运行时安装它:

    1. 将证书安装指示添加到您的 docker-compose.yml 文件中。例如:

      Red Hat-based containersyaml
      version: '3'
      services:
      	redhat-app:
      		image: registry.access.redhat.com/ubi9/ubi:latest
       		volumes:
       			- certs/certificate.pem:/etc/pki/ca-trust/source/anchors/certificate.pem
       		entrypoint: /bin/sh -c "dnf install -y ca-certificates && update-ca-trust extract && app start"
      Debian-based containersyaml
      version: '3'
      services:
      	debian-app:
      		image: debian:12
       		volumes:
       			- certs/certificate.pem:/usr/local/share/ca-certificates/certificate.crt
       		entrypoint: /bin/sh -c "apt-get update && apt-get install -y ca-certificates && update-ca-certificates && app start"
      Alpine-based containersyaml
      version: '3'
      services:
      	alpine-app:
      		image: alpine:3.18
       		volumes:
       			- certs/certificate.pem:/usr/local/share/ca-certificates/certificate.pem
       		entrypoint: /bin/sh -c "apk add --no-cache ca-certificates && update-ca-certificates && app start"
    2. 运行容器:

      docker-compose up
    3. 验证证书是否已安装:

      Red Hat-based containerssh
      docker exec -it <container-name> sh -c "cat /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem | grep Cloudflare"
      Debian and Alpine-based containerssh
      docker exec -it <container-name> sh -c "cat /etc/ssl/certs/ca-certificates.crt | grep Cloudflare"

命令行工具

命令行工具通常使用系统证书存储区,但可能需要特定的配置。

cURL

默认情况下,cURL 将使用操作系统的原生证书存储区。要强制 cURL 使用您的默认证书,请在命令中添加 --ca-native 标志。例如:

curl --ca-native https://example.com

要在 macOS 上将 Cloudflare 根证书与 cURL 结合使用,请将证书安装到操作系统钥匙串。cURL 默认将使用 macOS 根证书。

要在 Windows 上将 Cloudflare 证书与预安装的 cURL 版本或其他使用 Schannel (WinSSL) 后端的版本结合使用,请将证书安装到 Windows 证书存储区。如果您使用的是使用 OpenSSL 后端构建的较旧或自定义版本的 cURL,您将需要手动配置 cURL 以使用该证书

要在 Linux 上将 Cloudflare 根证书与 cURL 结合使用,请将证书安装到您发行版的证书存储区。cURL 默认将使用 Linux 根证书。

GNU Wget

默认情况下,GNU Wget 将使用操作系统的原生证书存储区。要强制 Wget 使用您的默认证书,请向命令中添加 --ca-certificate 标志。

要在 macOS 上将 Cloudflare 根证书与 Wget 结合使用,请将证书安装到操作系统钥匙串。Wget 默认将使用 macOS 根证书。

要在 Windows 上将 Cloudflare 证书与 Wget 结合使用,请将证书安装到 Windows 证书存储区。Wget 默认将使用 Windows 根证书。

要在 Linux 上将 Cloudflare 根证书与 Wget 结合使用,请将证书安装到您发行版的证书存储区。Wget 默认将使用 Linux 根证书。

或者,您可以直接指定证书文件:

wget --ca-certificate=[PATH_TO_CLOUDFLARE_CERT.pem] https://example.com

要使此设置永久生效,请将以下内容添加到您的 ~/.wgetrc 文件中:

ca_certificate = [PATH_TO_CLOUDFLARE_CERT.pem]

IDE 和开发环境

集成开发环境通常使用它们自己的 JVM 或证书存储区。

Android Studio

Android Studio 使用它自己的 JVM 和证书存储区。若要安装 Cloudflare 根证书:

  1. 下载 Cloudflare 证书

  2. 找到您 Android Studio 安装的 java.home 值。

    1. 在 Android Studio 中,前往 Help(帮助) > About(关于)(或在 macOS 上前往 Android Studio > About Android Studio(关于 Android Studio))。
    2. 复制对话框中显示的 JRE 路径。例如:
      /Applications/Android Studio.app/Contents/jbr/Contents/Home
  3. 将 Cloudflare 证书添加到 Android Studio 的 JVM 中:

  1. 在终端中,将您复制的 JRE 路径添加为环境变量。

    export JAVA_HOME="/path/to/jre"
  2. 运行 keytool 以安装并信任 Cloudflare 证书。

    "$JAVA_HOME/bin/keytool" -import -file ~/Downloads/certificate.crt -alias CloudflareRootCA -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit -trustcacerts -noprompt
  3. 重启 Android Studio。

  1. 在具有管理员权限的 PowerShell 终端中,将您复制 the JRE 路径添加为环境变量。

    $env:JAVA_HOME = "C:\Program Files\Android\Android Studio\jbr"
  2. 运行 keytool 以安装并信任 Cloudflare 证书。

    & "$env:JAVA_HOME\bin\keytool.exe" -import -file "$env:USERPROFILE\Downloads\certificate.crt" -alias CloudflareRootCA -keystore "$env:JAVA_HOME\lib\security\cacerts" -storepass changeit -trustcacerts -noprompt
  3. 重启 Android Studio。

对于 Android Studio 中的 Gradle 构建,您可能还需要通过针对 Gradle JVM 位置执行相同的步骤,来配置 Gradle JVM 以信任该证书。

JetBrains

若要在 JetBrains 产品上安装 Cloudflare 根证书,请参阅以下链接:

Eclipse

要在面向 Java 开发人员的 Eclipse IDE 上安装 Cloudflare 根证书,您必须将证书添加到 Eclipse 使用的 Java 虚拟机(JVM)中。

  1. 下载 Cloudflare 证书

  2. 找到您 Eclipse 安装的 java.home 值。

    1. 在 Eclipse 中,前往 Eclipse > About Eclipse(关于 Eclipse)(或在 Windows 和 Linux 上前往 Help > About Eclipse IDE(关于 Eclipse IDE)
    2. 选择 Installation Details(安装详细信息),然后前往 Configuration(配置)
    3. 搜索 java.home,然后定位该值。例如:
    *** System properties:
    java.home=/Users/<username>/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.macosx.aarch64_17.0.8.v20230831-1047/jre
    1. 复制 java.home= 后面的完整路径。
  3. 将 Cloudflare 证书添加到 Eclipse 的 JVM 中:

  1. 在终端中,将您复制的 java.home 值添加为环境变量。

    export JAVA_HOME=$(echo /path/to/java.home)
  2. 运行 keytool 以安装并信任 Cloudflare 证书。

    "$JAVA_HOME/bin/keytool" -import -file ~/Downloads/certificate.crt -alias CloudflareRootCA -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit -trustcacerts -noprompt
  3. 重启 Eclipse。

  1. 在终端中,将您复制的 java.home 值添加为环境变量。

    set JAVA_HOME="\path\to\java.home"
  2. 运行 keytool 以安装并信任 Cloudflare 证书。

    "%JAVA_HOME%\bin\keytool.exe" -import -file "%UserProfile%\Downloads\Cloudflare_CA.crt" -alias CloudflareRootCA -keystore "%JAVA_HOME%\lib\security\cacerts" -storepass changeit -trustcacerts -noprompt
  3. 重启 Eclipse。

有关使用 keytool 向 Eclipse 添加证书的更多信息,请参阅 IBM 文档

云和基础设施工具

云服务提供商和基础设施工具通常需要进行证书配置,以便进行 API 访问和存储库访问。

Google Cloud

Google Cloud SDK

以下命令将设置 Google Cloud SDK 以使用 Cloudflare 证书。有关配置 Google Cloud SDK 的更多信息,请参阅 Google Cloud 文档

  1. 获取 curl 的 cacert 证书包。

    curl --remote-name https://curl.se/ca/cacert.pem
  2. 下载 .pem 格式的 Cloudflare 证书

  3. 将证书合并到单个 .pem 文件中。

    cat cacert.pem certificate.pem > ~/ca.pem
  4. 配置 Google Cloud 以使用合并后的 .pem 文件。

    gcloud config set core/custom_ca_certs_file ~/ca.pem
Kaniko

如果您将 Kaniko 与 Google Cloud SDK 结合使用,您必须在 Kaniko CA 存储区中安装 Cloudflare 证书。有关更多信息,请参阅 gcloud 文档

Google Apps Manager (GAM)

Google Apps Manager (GAM) 使用其自身的证书存储区。要向 GAM 添加 Cloudflare 证书,请参阅 GAM 文档

AWS CLI

全局配置

要持久设置证书的位置:

  1. 下载 .pem 格式的 Cloudflare 证书

  2. 找到并打开您的 AWS 配置文件

  3. 配置 ca_bundle 设置以指向您证书的位置。例如:

    .aws/configdiff
    [default]
    region = us-west-1
    
    +ca_bundle = /path/to/certificate.pem
  4. 重启您的终端。

环境变量

要将证书的位置设置为环境变量使用:

  1. 下载 .pem 格式的 Cloudflare 证书
  2. 在终端中,根据您的操作系统,将 AWS_CA_BUNDLE 环境变量设置为您证书的位置。
  3. 重启您的终端。

Azure CLI

全局配置

要持久设置证书的位置:

  1. 下载 .pem 格式的 Cloudflare 证书
  2. 根据您的操作系统,设置 REQUESTS_CA_BUNDLE 环境变量以指向您的证书。

将以下内容添加到您的 shell 配置文件中(例如 ~/.zshrc~/.bash_profile):

export REQUESTS_CA_BUNDLE="$HOME/Downloads/certificate.pem"

在 PowerShell 中:

[System.Environment]::SetEnvironmentVariable('REQUESTS_CA_BUNDLE', "$HOME\Downloads\certificate.pem", 'User')
  1. 重启您的终端。
单条命令

为单条命令设置证书位置:

  1. 下载 .pem 格式的 Cloudflare 证书

  2. 在运行命令时设置 REQUESTS_CA_BUNDLE 环境变量:

    REQUESTS_CA_BUNDLE=/path/to/certificate.pem az <command>

有关更多信息,请参阅 Azure CLI 文档

Boto3

Boto3(适用于 Python 的 AWS SDK)可以通过几种方式配置为使用 Cloudflare 证书。

环境变量

要使用环境变量设置证书的位置:

  1. 下载 .pem 格式的 Cloudflare 证书
  2. 根据您的操作系统设置 AWS_CA_BUNDLE 环境变量。

将以下内容添加到您的 shell 配置文件中(例如 ~/.zshrc~/.bash_profile):

export AWS_CA_BUNDLE="$HOME/Downloads/certificate.pem"

在 PowerShell 中:

[System.Environment]::SetEnvironmentVariable('AWS_CA_BUNDLE', "$HOME\Downloads\certificate.pem", 'User')
  1. 重启您的终端。
AWS 配置文件

要在您的 AWS 配置中持久设置证书的位置:

  1. 下载 .pem 格式的 Cloudflare 证书

  2. 找到并打开您的 AWS 配置文件

  3. 配置 ca_bundle 设置以指向您证书的位置。例如:

    .aws/configdiff
    [default]
    region = us-west-1
    
    +ca_bundle = /path/to/certificate.pem
在代码中

直接在您的 Python 代码中指定证书:

  1. 下载 .pem 格式的 Cloudflare 证书

  2. 创建 Boto3 客户端或资源时传递证书路径:

    import boto3
    
    client = boto3.client(
        's3',
        verify='/path/to/certificate.pem'
    )

有关更多信息,请参阅 Boto3 文档

企业应用程序

企业桌面应用程序和专业工具可能需要自定义证书配置。

Google Drive

要在 Google Drive 桌面应用程序中信任 Cloudflare 根证书,请遵循适用于您操作系统的步骤。这些步骤需要您下载 .pem 格式的证书

  1. 在终端中,将 Google Drive 证书文件的内容复制到永久位置(例如“文档”文件夹)中的新证书文件中。例如:

    cat /Applications/"Google Drive.app"/Contents/Resources/roots.pem > ~/Documents/gdrivecerts.pem
  2. 将下载的证书内容追加到新文件的末尾。例如:

    cat ~/Downloads/certificate.pem >> ~/Documents/gdrivecerts.pem
  3. 将新创建的根证书应用到您的 Google Drive 应用程序中。例如:

    sudo defaults write /Library/Preferences/com.google.drivefs.settings TrustedRootCertsFile "/Users/$(whoami)/Documents/gdrivecerts.pem"

您可以使用以下命令验证更新。

defaults read /Library/Preferences/com.google.drivefs.settings
  1. 在具有管理员权限的 PowerShell 终端中,将 Google Drive 证书文件的内容复制到永久位置(例如“文档”文件夹)中的新证书文件中。例如:

    Get-Content "C:\Program Files\Google\Drive File Stream\roots.pem" | Set-Content "$HOME\Documents\gdrivecerts.pem"
  2. 将下载的证书内容追加到新文件的末尾。例如:

    Get-Content "$HOME\Downloads\certificate.pem" | Add-Content "$HOME\Documents\gdrivecerts.pem"
  3. 将新创建的根证书应用到您的 Google Drive 应用程序中。例如:

    Set-ItemProperty -Path "HKLM:\SOFTWARE\Google\DriveFS" -Name "TrustedRootCertsFile" -Value "$HOME\Documents\gdrivecerts.pem"

您可以使用以下命令验证更新。

Get-ItemProperty -Path "HKLM:\SOFTWARE\Google\DriveFS" | Select-Object TrustedRootCertsFile

有关更多信息,请参阅针对 TrustedRootCertsFile 设置的 Google 文档

Minikube

要在 Minikube 中信任 Cloudflare 根证书,请参阅 x509: certificate signed by unknown authority

这篇文档对您有帮助吗?