3.2. 指定可信 CA 证书


3.2.1. 部署可信 CA 证书的时间

概述

当应用程序在 SSL/TLS 握手过程中收到 X.509 证书时,应用程序会通过检查是否通过检查签发者 CA 是预定义的可信 CA 证书之一来决定是否信任接收的证书。如果收到的 X.509 证书由应用程序的可信 CA 证书有效签名,则证书被视为可信证书;否则,它将被拒绝。

哪些应用程序需要指定可信 CA 证书?

任何可能接收 X.509 证书作为 HTTPS 握手一部分的应用程序都必须指定可信 CA 证书列表。例如,这包括以下类型的应用程序:

  • 所有 HTTPS 客户端。
  • 支持 mutual 身份验证 的任何 HTTPS 服务器。

3.2.2. 为 HTTPS 指定可信 CA 证书

CA 证书格式

CA 证书必须以 Java 密钥存储格式提供。

Apache CXF 配置文件中的 CA 证书部署

要为 HTTPS 传输部署一个或多个可信根 CA,请执行以下步骤:

  1. 汇编要部署的可信 CA 证书集合。可信 CA 证书可以从公共 CA 或私有 CA 获取(有关如何生成您自己的 CA 证书的详情,请参阅 第 2.5 节 “创建您自己的证书”)。可信 CA 证书可以采用与 Java 密钥存储 实用程序兼容的任何格式,例如 PEM 格式。您只需要是证书本身 - 不需要私钥和密码。
  2. 如果有一个 CA 证书 cacert.pem,采用 PEM 格式,您可以通过输入以下命令将证书添加到 JKS 信任存储(或创建新的信任存储):

    keytool -import -file cacert.pem -alias CAAlias -keystore truststore.jks -storepass StorePass

    其中 CAAlias 是一个方便的标签,可让您使用 keytool 程序访问此特定 CA 证书。文件 truststore.jks 是含有 CA 证书的密钥存储文件(如果该文件尚不存在),keytool 实用程序会创建一个。StorePass 密码提供对密钥存储文件 truststore.jks 的访问。

  3. 根据需要重复第 2 步,将所有 CA 证书添加到信任存储文件 truststore.jks
  4. 编辑相关的 XML 配置文件,以指定信任存储文件的位置。您必须在相关 HTTPS 端口的配置中包含 sec:trustManagers 元素。

    例如,您可以配置客户端端口,如下所示:

    <!-- Client port configuration -->
    <http:conduit id="{Namespace}PortName.http-conduit">
      <http:tlsClientParameters>
        ...
        <sec:trustManagers>
          <sec:keyStore type="JKS"
                        password="StorePass"
                        file="certs/truststore.jks"/>
        </sec:trustManagers>
        ...
      </http:tlsClientParameters>
    </http:conduit>

    其中,信任存储使用 JKS 密钥存储实现的 type 属性 specifes,storagePass 是访问 truststore.jks 密钥存储所需的密码。

    配置服务器端口,如下所示:

    <!-- Server port configuration -->
    <http:destination id="{Namespace}PortName.http-destination">
      <http:tlsServerParameters secureSocketProtocol="TLSv1">
        ...
        <sec:trustManagers>
          <sec:keyStore type="JKS"
                        password="StorePass"
                        file="certs/truststore.jks"/>
        </sec:trustManagers>
        ...
      </http:tlsServerParameters>
    </http:destination>
    重要

    您必须在服务器端将 secureSocketProtocol 设置为 TLSv1,以便防止 Poodle 漏洞(CVE-2014-3566)

    警告

    包含信任存储的目录(例如,X509Deploy/truststores/)应为安全目录(即,仅由管理员写入)。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.