8.3. 设置 HTTPS/SSL


警告

默认情况下,Red Hat Single Sign-On 没有设置来处理 SSL/HTTPS。强烈建议您在红帽单点登录服务器本身或在 Red Hat Single Sign-On 服务器前启用 SSL。

这个默认行为由每个 Red Hat Single Sign-On 域的 SSL/HTTPS 模式定义。《 服务器管理指南》 中会对此进行更为详细的探讨,但让我们给出一些上下文并简要概述这些模式。

外部请求
Red Hat Single Sign-On 可以在没有 SSL 的情况下开箱即用,只要您坚持使用 localhost127.0.0.110.x.x.x、192.x.x 和 172.16.x.x 等私有 IP 地址。如果您没有在服务器上配置的 SSL/HTTPS,或者尝试从非专用 IP 地址通过 HTTP 访问 Red Hat Single Sign-On,则会出现错误。
none
红帽单点登录不需要 SSL。只有在您关注的事情时,这才应该真正在开发中使用。
所有请求
红帽单点登录需要所有 IP 地址的 SSL。

在 Red Hat Single Sign-On 管理控制台中配置每个域的 SSL 模式。

8.3.1. 为 Red Hat Single Sign-On 服务器启用 SSL/HTTPS

如果您不使用反向代理或负载均衡器来处理 HTTPS 流量,则需要为 Red Hat Single Sign-On 服务器启用 HTTPS。这涉及

  1. 获取或生成包含 SSL/HTTP 流量的私钥和证书的密钥存储
  2. 配置红帽单点登录服务器以使用此密钥对和证书。

8.3.1.1. 创建证书和 Java 密钥存储

为了允许 HTTPS 连接,您需要获取自签名或第三方签名证书并将其导入到 Java 密钥存储,然后才能在部署 Red Hat Single Sign-On 服务器的 web 容器中启用 HTTPS。

8.3.1.1.1. 自签名证书

在开发过程中,您可能没有可用的第三方签名证书来测试红帽单点登录部署,因此您将需要使用 Java JDK 附带的 keytool 程序生成自签名证书。

$ keytool -genkey -alias localhost -keyalg RSA -keystore keycloak.jks -validity 10950
    Enter keystore password: secret
    Re-enter new password: secret
    What is your first and last name?
    [Unknown]:  localhost
    What is the name of your organizational unit?
    [Unknown]:  Keycloak
    What is the name of your organization?
    [Unknown]:  Red Hat
    What is the name of your City or Locality?
    [Unknown]:  Westford
    What is the name of your State or Province?
    [Unknown]:  MA
    What is the two-letter country code for this unit?
    [Unknown]:  US
    Is CN=localhost, OU=Keycloak, O=Test, L=Westford, ST=MA, C=US correct?
    [no]:  yes
Copy to Clipboard Toggle word wrap

当您看到 问题是您的名字和姓氏 时,请提供您安装该服务器的机器的 DNS 名称。出于测试目的,应使用 localhost。执行此命令后,keycloak.jks 文件将与您执行 keytool 命令的同一目录中生成。

如果您希望第三方签名证书,但没有有一个证书,您可以获得位于 cacert.org 的免费证书。但是,您首先需要使用以下步骤。

流程

  1. 生成证书请求:

    $ keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
    Copy to Clipboard Toggle word wrap

    其中 您的域 是生成此证书的 DNS 名称。keytool 生成请求:

    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIC2jCCAcICAQAwZTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMREwDwYDVQQHEwhXZXN0Zm9y
    ZDEQMA4GA1UEChMHUmVkIEhhdDEQMA4GA1UECxMHUmVkIEhhdDESMBAGA1UEAxMJbG9jYWxob3N0
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr7kck2TaavlEOGbcpi9c0rncY4HhdzmY
    Ax2nZfq1eZEaIPqI5aTxwQZzzLDK9qbeAd8Ji79HzSqnRDxNYaZu7mAYhFKHgixsolE3o5Yfzbw1
    29RvyeUVe+WZxv5oo9wolVVpdSINIMEL2LaFhtX/c1dqiqYVpfnvFshZQaIg2nL8juzZcBjj4as
    H98gIS7khql/dkZKsw9NLvyxgJvp7PaXurX29fNf3ihG+oFrL22oFyV54BWWxXCKU/GPn61EGZGw
    Ft2qSIGLdctpMD1aJR2bcnlhEjZKDksjQZoQ5YMXaAGkcYkG6QkgrocDE2YXDbi7GIdf9MegVJ35
    2DQMpwIDAQABoDAwLgYJKoZIhvcNAQkOMSEwHzAdBgNVHQ4EFgQUQwlZJBA+fjiDdiVzaO9vrE/i
    n2swDQYJKoZIhvcNAQELBQADggEBAC5FRvMkhal3q86tHPBYWBuTtmcSjs4qUm6V6f63frhveWHf
    PzRrI1xH272XUIeBk0gtzWo0nNZnf0mMCtUBbHhhDcG82xolikfqibZijoQZCiGiedVjHJFtniDQ
    9bMDUOXEMQ7gHZg5q6mJfNG9MbMpQaUVEEFvfGEQQxbiFK7hRWU8S23/d80e8nExgQxdJWJ6vd0X
    MzzFK6j4Dj55bJVuM7GFmfdNC52pNOD5vYe47Aqh8oajHX9XTycVtPXl45rrWAH33ftbrS8SrZ2S
    vqIFQeuLL3BaHwpl3t7j2lMWcK1p80laAxEASib/fAwrRHpLHBXRcq6uALUOZl4Alt8=
    -----END NEW CERTIFICATE REQUEST-----
    Copy to Clipboard Toggle word wrap
  2. 将此 CA 请求发送到您的证书颁发机构(CA)。

    CA 将为您签发签名证书并将其发送给您。

  3. 获取并导入 CA 的 root 证书。

    您可以从 CA 下载证书(换句话说:root.crt)并导入如下:

    $ keytool -import -keystore keycloak.jks -file root.crt -alias root
    Copy to Clipboard Toggle word wrap
  4. 将您的新 CA 生成的证书导入到您的密钥存储中:

    $ keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
    Copy to Clipboard Toggle word wrap

8.3.1.2. 配置 Red Hat Single Sign-On 以使用 Keystore

现在,您已具有适当证书的 Java 密钥存储,您需要配置 Red Hat Single Sign-On 安装才能使用它。

流程

  1. 编辑 standalone.xmlstandalone-ha.xmlhost.xml 文件,以使用密钥存储并启用 HTTPS。
  2. 将密钥存储文件移到部署的 配置/ 目录中,或者您选择的位置或提供该文件的绝对路径。

    如果您使用绝对路径,请从您的配置中删除可选的 relative-to 参数(See 操作模式)。

  3. 使用 CLI 添加新的 security-realm 元素:

    $ /core-service=management/security-realm=UndertowRealm:add()
    
    $ /core-service=management/security-realm=UndertowRealm/server-identity=ssl:add(keystore-path=keycloak.jks, keystore-relative-to=jboss.server.config.dir, keystore-password=secret)
    Copy to Clipboard Toggle word wrap

    如果使用域模式,应在每个主机中使用 /host=<host_name>/ 前缀执行命令(在所有主机中都创建 security-realm )。下面是一个示例,您可以为每个主机重复:

    $ /host=<host_name>/core-service=management/security-realm=UndertowRealm/server-identity=ssl:add(keystore-path=keycloak.jks, keystore-relative-to=jboss.server.config.dir, keystore-password=secret)
    Copy to Clipboard Toggle word wrap

    在独立或主机配置文件中,security-realms 元素应类似如下:

    <security-realm name="UndertowRealm">
        <server-identities>
            <ssl>
                <keystore path="keycloak.jks" relative-to="jboss.server.config.dir" keystore-password="secret" />
            </ssl>
        </server-identities>
    </security-realm>
    Copy to Clipboard Toggle word wrap
  4. 在独立或每个域配置文件中,搜索任何 安全域 实例。
  5. 修改 https-listener 以使用创建的域:

    $ /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=security-realm, value=UndertowRealm)
    Copy to Clipboard Toggle word wrap

    如果使用域模式,为命令添加与以下内容一起使用的配置集: /profile=<profile_name>/

    生成的元素 server name="default-server" 是指 subsystem xmlns="urn:jboss:domain:undertow:12.0" 的子元素,它应包含以下小节:

    <subsystem xmlns="urn:jboss:domain:undertow:12.0">
       <buffer-cache name="default"/>
       <server name="default-server">
          <https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/>
       ...
    </subsystem>
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat