3.3. 指定应用程序自己的证书


3.3.1. 为 HTTPS 部署您自己的证书

概述

在使用 HTTPS 传输时,使用 XML 配置文件部署应用程序的证书。

流程

要为 HTTPS 传输部署应用程序自己的证书,请执行以下步骤:

  1. 获取 Java 密钥存储格式 CertName.jks 的应用程序证书。有关如何以 Java 密钥存储格式创建证书的说明,请参阅 第 2.5.3 节 “使用 CA 在 Java Keystore 中创建签名证书”

    注意

    有些 HTTPS 客户端(如 Web 浏览器)执行 URL 完整性检查,该检查需要证书的身份以匹配在其上部署服务器的主机名。详情请查看 第 2.4 节 “HTTPS 证书的特殊要求”

  2. 将证书的密钥存储( CertName.jks )复制到部署主机上的证书目录;例如,X509Deploy/certs

    certificate 目录应该是安全的目录,它只能由管理员和其他特权用户写入。

  3. 编辑相关的 XML 配置文件,以指定证书密钥存储的位置 CertName.jks。您必须在相关 HTTPS 端口的配置中包含 sec:keyManagers 元素。

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

    <http:conduit id="{Namespace}PortName.http-conduit">
      <http:tlsClientParameters>
        ...
        <sec:keyManagers keyPassword="CertPassword">
          <sec:keyStore type="JKS"
                        password="KeystorePassword"
                        file="certs/CertName.jks"/>
        </sec:keyManagers>
        ...
      </http:tlsClientParameters>
    </http:conduit>

    其中 keyPassword 属性指定解密证书的私钥(即 CertPassword )所需的密码,即 CertPassword,即信任存储使用 JKS 密钥存储实施的 type 属性,password 属性指定访问 CertName.jks 密钥存储(即 KeystorePassword)所需的密码。

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

    <http:destination id="{Namespace}PortName.http-destination">
      <http:tlsServerParameters secureSocketProtocol="TLSv1">
        ...
        <sec:keyManagers keyPassword="CertPassword">
          <sec:keyStore type="JKS"
                        password="KeystorePassword"
                        file="certs/CertName.jks"/>
        </sec:keyManagers>
        ...
      </http:tlsServerParameters>
    </http:destination>
    重要

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

    警告

    包含应用程序证书的目录(例如,X509Deploy/certs/)应为安全目录(即,仅由管理员读取和写入)。

    警告

    包含 XML 配置文件的目录应该是安全目录(即仅由管理员读取和写入),因为配置文件以纯文本形式包含密码。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.