第 1 章 使用 TLS Registry 管理安全密钥和证书


TLS Registry 是一个 Quarkus 扩展,可集中 TLS 配置,从而更轻松地在应用程序间管理和维护安全连接。在单一集中位置定义 TLS 配置时,您可以使用 TLS Registry 从应用程序中的多个组件引用这些配置,以确保一致性并减少配置错误的可能性。

TLS Registry 整合设置并支持多个命名配置。因此,您可以为不同的应用程序部分定制 TLS 设置。当不同的组件需要不同的安全配置时,这个灵活性特别有用。

使用兼容扩展时,TLS Registry 扩展会自动包含在项目中,如 Quarkus REST、gRPC。因此,使用 TLS Registry 的应用程序可以准备好处理开箱即用的安全通信。

TLS Registry 还提供与各种密钥存储格式(如 PKCS12、PEM 和 JKS)自动重新载入和兼容性。

1.1. 使用 TLS registry

要配置 TLS 连接,包括密钥和信任存储,请使用 quarkus.tlssignal 属性。这些属性是必需的:

  • 设置默认的 TLS 配置,直接在 quarkus.tlsllowedRegistries 下定义
  • 使用 quarkus.tls.<name > …​ 创建单独的、命名的配置。通过指定 quarkus.tls.<name& gt; regarding 属性,您可以调整特定组件的 TLS 设置。

1.1.1. 为 HTTP 服务器配置 HTTPS

为确保客户端-服务器通信,通常需要客户端验证服务器的真实性。

  • 服务器必须使用密钥存储,其中包含其证书和私钥
  • 客户端需要配置有信任存储以验证服务器证书

在 TLS 握手期间,服务器提供其证书,然后验证客户端。这可防止中间人攻击和安全数据传输。

以下小节介绍了如何使用 PEM 或 PKCS12 密钥类型设置 HTTPS。另外,它们提供了有关如何使用命名配置一次指定和管理多个 TLS 设置的信息,这样您可以为每个设置定义不同的设置。

根据密钥存储类型使用以下配置示例:

  • 使用 PEM 文件:

    quarkus.tls.key-store.pem.0.cert=server.crt
    quarkus.tls.key-store.pem.0.key=server.key
    quarkus.http.insecure-requests=disabled # Reject HTTP requests
  • 使用 p12 (PKCS12)密钥存储:

    quarkus.tls.key-store.p12.path=server-keystore.p12
    quarkus.tls.key-store.p12.password=secret
    quarkus.http.insecure-requests=disabled # Reject HTTP requests
  • 使用名称区分多个配置:

    quarkus.tls.https.key-store.p12.path=server-keystore.p12
    quarkus.tls.https.key-store.p12.password=secret
    quarkus.http.insecure-requests=disabled
    quarkus.http.tls-configuration-name=https

1.1.2. 为客户端配置 HTTPS

以下示例将名为 "hello" 的 gRPC 客户端配置为使用带有默认 TLS 配置中的信任存储的 HTTPS:

quarkus.tls.trust-store.jks.path=grpc-client-truststore.jks
quarkus.tls.trust-store.jks.password=password

quarkus.grpc.clients.hello.plain-text=false
quarkus.grpc.clients.hello.use-quarkus-grpc-client=true

1.1.3. 配置 mTLS

要在红帽构建的 Quarkus 应用程序中设置 mutual TLS (mTLS),请通过创建和管理密钥存储和信任存储来配置服务器和客户端:

  • 服务器密钥存储 :包含服务器的证书和私钥。
  • Client keystore :包含客户端的证书和私钥。
  • 服务器 truststore :存储客户端的证书以验证客户端。
  • 客户端信任存储 :存储服务器证书以验证服务器。

    指定密钥存储和信任存储的示例配置:

    quarkus.tls.my-server.key-store.p12.path=target/certs/grpc-keystore.p12
    quarkus.tls.my-server.key-store.p12.password=password
    quarkus.tls.my-server.trust-store.p12.path=target/certs/grpc-server-truststore.p12
    quarkus.tls.my-server.trust-store.p12.password=password
    
    quarkus.tls.my-client.trust-store.p12.path=target/certs/grpc-client-truststore.p12
    quarkus.tls.my-client.trust-store.p12.password=password
    quarkus.tls.my-client.key-store.p12.path=target/certs/grpc-client-keystore.p12
    quarkus.tls.my-client.key-store.p12.password=password
    
    quarkus.grpc.clients.hello.plain-text=false
    quarkus.grpc.clients.hello.tls-configuration-name=my-client
    quarkus.grpc.clients.hello.use-quarkus-grpc-client=true
    
    quarkus.http.ssl.client-auth=REQUIRED # Enable mTLS
    quarkus.http.insecure-requests=disabled
    quarkus.http.tls-configuration-name=my-server
    quarkus.grpc.server.use-separate-server=false
    quarkus.grpc.server.plain-text=false

    此配置通过确保服务器和客户端验证彼此的证书启用 mTLS,从而提供额外的安全层。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.