搜索

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

download PDF

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

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

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

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

8.4.1.1. 自签名证书

在开发中,您可能没有可用的第三方签名证书来测试 Red Hat Single Sign-On 部署,因此您将需要使用 Java JDK 附带的 密钥 工具生成自签名证书。

$ 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

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

如果您需要第三方签名证书,但没有证书,您可以在 cacert.org 处获取一个免费证书。但是,您首先需要使用以下步骤。

流程

  1. 生成证书请求:

    $ keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq

    其中,您的域 是生成此证书的 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-----
  2. 将此 CA 请求发送到您的证书颁发机构(CA)。

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

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

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

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

    $ keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer

8.4.2. 配置红帽单点登录以使用密钥存储

现在,您已拥有有适当证书的 Java 密钥存储,您需要配置您的红帽单点登录安装才能使用它。使用适用于您的安装的配置步骤:

8.4.2.1. JBoss 安全传统

流程

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

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

  3. 在 JBoss EAP 的 bin 目录中,创建一个名为 sso_legacy.cli 的批处理文件。
  4. 在批处理文件中添加以下内容:

    # Start batching commands
    
    batch
    
    /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)
    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=security-realm, value=UndertowRealm)
    
    # Run the batch commands
    
    run-batch
  5. 启动 Red Hat Single Sign-On 服务器。
  6. 更改到 JBoss EAP 的 bin 目录。
  7. 运行以下脚本:

    $ sh jboss-cli.sh --connect --file=sso_legacy.cli
    
    The batch executed successfully
    process-state: reload-required
  8. 重启 Red Hat Single Sign-On 服务器,使 sso_legacy.cli 更改生效。

8.4.2.2. Elytron TLS v1.2

流程

  1. 在 JBoss EAP 的 bin 目录中,创建一个名为 sso.cli 的批处理文件。
  2. 在批处理文件中添加以下内容:

    # Start batching commands
    
    batch
    
    # Add the keystore, key manager and ssl context configuration in the elytron subsystem
    
    /subsystem=elytron/key-store=httpsKS:add(relative-to=jboss.server.config.dir,path=keycloak.jks,credential-reference={clear-text=secret},type=JKS)
    /subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS,credential-reference={clear-text=secret})
    /subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM,protocols=["TLSv1.2"])
    
    # Change the undertow subsystem configuration to use the ssl context defined in the previous step for https
    
    /subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)
    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=httpsSSC)
    
    # Run the batch commands
    
    run-batch
  3. 启动 Red Hat Single Sign-On 服务器。
  4. 更改到 JBoss EAP 的 bin 目录。
  5. 运行以下脚本:

    $ sh jboss-cli.sh --connect --file=sso.cli
    
    The batch executed successfully
    process-state: reload-required
  6. 重启 Red Hat Single Sign-On 服务器,使 sso.cli 更改生效。

有关配置 TLS 的更多信息,请参阅 WildFly 文档

8.4.2.3. Elytron TLS 1.3

流程

  1. 在 JBoss EAP 的 bin 目录中,创建一个名为 sso.cli 的批处理文件。
  2. 在批处理文件中添加以下内容:

    batch
    
    # Add the keystore, key manager and ssl context configuration in the elytron subsystem
    /subsystem=elytron/key-store=httpsKS:add(relative-to=jboss.server.config.dir,path=keycloak.jks,credential-reference={clear-text=secret},type=JKS)
    /subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS,credential-reference={clear-text=secret})
    
    
    /subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM,protocols=["TLSv1.3"])
    /subsystem=elytron/server-ssl-context=httpsSSC:write-attribute(name=cipher-suite-names,value=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256)
    
    # Change the undertow subsystem configuration to use the ssl context defined in the previous step for https
    
    /subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)
    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=httpsSSC)
    
    # Run the batch commands
    
    run-batch
  3. 启动 Red Hat Single Sign-On 服务器。
  4. 更改到 JBoss EAP 的 bin 目录。
  5. 运行以下脚本:

    $ sh jboss-cli.sh --connect --file=sso.cli
    
    The batch executed successfully
    process-state: reload-required
  6. 重启 Red Hat Single Sign-On 服务器,使 sso.cli 更改生效。

有关配置 TLS 的更多信息,请参阅 WildFly 文档

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.