第 3 章 执行高级步骤


本章论述了高级流程,如为 Red Hat Single Sign-On 服务器设置密钥存储和信任存储,以及创建管理员帐户,以及可用的红帽单点登录客户端方法概述,以及有关配置集群的指导。

3.1. 部署 passthrough TLS 终止模板

您可以使用这些模板进行部署。它们要求 HTTPS、JGroups 密钥存储和 Red Hat Single Sign-On 服务器信任存储已经存在,因此可用于使用自定义 HTTPS、JGroup 密钥存储和红帽单点登录服务器信任存储实例化 Red Hat Single Sign-On server pod。

3.1.1. 准备部署

流程

  1. 使用包含 cluster:admin 角色的用户登录 OpenShift CLI。
  2. 创建一个新项目:

    $ oc new-project sso-app-demo
  3. view 角色添加到 default 服务帐户。这可让服务帐户查看 sso-app-demo 命名空间中的所有资源,这是管理集群所必需的。

    $ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default

在这一流程中,openssl 工具包用于生成 HTTPS 密钥存储的 CA 证书,并为 Red Hat Single Sign-On 服务器创建信任存储。keytoolJava Development Kit 中包含的软件包,然后用于生成这些密钥存储的自签名证书。

使用重新加密 TLS 终止的 红帽单点登录应用模板 不需要期望 HTTPS 和 JGroups 密钥存储以及 Red Hat Single Sign-On server truststore 在手前准备。

注意

如果要使用现有的 HTTPS / JGroups 密钥存储来调配 Red Hat Single Sign-On 服务器,请使用一些直通模板。

再加密模板使用 OpenShift 的内部服务 服务 x509 证书机密 来自动创建 HTTPS 和 JGroups 密钥存储。

Red Hat Single Sign-On 服务器信任存储也会自动创建,其中包含 /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt CA 证书文件,用于创建这些集群证书。此外,Red Hat Single Sign-On 服务器的信任存储会预先填充 Java 系统路径中所有已知的可信 CA 证书文件。

前提条件

使用 passthrough TLS 终止的 Red Hat Single Sign-On 应用程序模板需要部署以下内容:

注意

对于生产环境,红帽建议您使用通过已验证的证书颁发机构(CA)为 SSL 加密连接(HTTPS)购买的 SSL 证书。

如需有关如何使用自签名或购买的 SSL 证书创建密钥存储的更多信息,请参阅 JBoss 企业应用平台安全指南

创建 HTTPS 密钥存储:

流程

  1. 生成 CA 证书。选择 并记得密码。提供相同的密码,当使用以下 CA 证书为证书签名请求进行签名 时:

    $ openssl req -new -newkey rsa:4096 -x509 -keyout xpaas.key -out xpaas.crt -days 365 -subj "/CN=xpaas-sso-demo.ca"
  2. 为 HTTPS 密钥存储生成私钥。提供 mykeystorepass 作为密钥存储密码:

    $ keytool -genkeypair -keyalg RSA -keysize 2048 -dname "CN=secure-sso-sso-app-demo.openshift.example.com" -alias jboss -keystore keystore.jks
  3. 为 HTTPS 密钥存储生成证书签名请求。提供 mykeystorepass 作为密钥存储密码:

    $ keytool -certreq -keyalg rsa -alias jboss -keystore keystore.jks -file sso.csr
  1. 使用 CA 证书为证书签名请求签名。提供 用于生成 CA 证书的 相同密码:

    $ openssl x509 -req <(printf "subjectAltName=DNS:secure-sso-sso-app-demo.openshift.example.com") -CA xpaas.crt -CAkey xpaas.key -in sso.csr -out sso.crt -days 365 -CAcreateserial
    注意

    要使上述命令在一行上工作,该命令包含进程替换(<()语法)。确保您的当前 shell 环境支持此类语法。否则,您可能会在 意外令牌 '(' 消息旁边遇到语法错误

  2. 将 CA 证书导入到 HTTPS 密钥存储中。提供 mykeystorepass 作为密钥存储密码。回复 yes to Trust this certificate? [no]: question:

    $ keytool -import -file xpaas.crt -alias xpaas.ca -keystore keystore.jks
  3. 将签名的证书签名请求导入到 HTTPS 密钥存储。提供 mykeystorepass 作为密钥存储密码:

    $ keytool -import -file sso.crt -alias jboss -keystore keystore.jks

为 JGroups 密钥存储生成安全密钥:

提供密码 作为密钥存储密码:

$ keytool -genseckey -alias secret-key -storetype JCEKS -keystore jgroups.jceks

将 CA 证书导入到新的 Red Hat Single Sign-On 服务器信任存储中:

提供 mykeystorepass 作为信任存储密码。回复 yes to Trust this certificate? [no]: question:

$ keytool -import -file xpaas.crt -alias xpaas.ca -keystore truststore.jks

3.1.3. 创建 secret

流程

您要创建名为机密的对象,供 OpenShift 用于存放敏感信息,如密码或密钥存储。

  1. 为 HTTPS 和 JGroups 密钥存储创建机密,以及红帽单点登录服务器信任存储( 在上一节中 生成)。

    $ oc create secret generic sso-app-secret --from-file=keystore.jks --from-file=jgroups.jceks --from-file=truststore.jks
  2. 将这些 secret 链接到用于运行 Red Hat Single Sign-On Pod 的默认服务帐户。

    $ oc secrets link default sso-app-secret

3.1.4. 使用 OpenShift CLI 部署 Passthrough TLS 模板

创建密钥存储 和机密后,使用 oc 命令部署直通 TLS 终止模板。???

3.1.4.1. oc 命令指南

在以下 oc 命令中,SSO_ADMIN_USERNAMESSO_ADMIN_PASSWORDHTTPS_PASSWORDJGROUPS_ENCRYPT_PASSWORDSSO_TRUSTSTORE_PASSWORD 变量的值与 sso75-https 红帽 Single Sign-On 应用程序模板中的默认值匹配。

对于生产环境,红帽建议您咨询组织的上门策略,以获取为 Red Hat Single Sign-On 服务器的管理员用户帐户生成强用户名和密码的说明,以及用于 HTTPS 和 JGroups 密钥存储的密码,以及红帽单点登录服务器的信任存储。

此外,当您创建模板时,使密码与创建密钥存储时提供的密码匹配。如果您使用了不同的用户名或密码,请修改模板中参数的值以匹配您的环境。

注意

您可以使用以下 keytool 命令确定与证书关联的别名名称。keytool 是 Java Development Kit 中包含的软件包。

$ keytool -v -list -keystore keystore.jks | grep Alias
Enter keystore password:  mykeystorepass
Alias name: xpaas.ca
Alias name: jboss
$ keytool -v -list -keystore jgroups.jceks -storetype jceks | grep Alias
Enter keystore password:  password
Alias name: secret-key

以下命令中的 SSO_ADMIN_USERNAMESSO_ADMIN_PASSWORDSSO_REALM 模板参数是可选的。

3.1.4.2. oc 命令示例

$ oc new-app --template=sso75-https \
 -p HTTPS_SECRET="sso-app-secret" \
 -p HTTPS_KEYSTORE="keystore.jks" \
 -p HTTPS_NAME="jboss" \
 -p HTTPS_PASSWORD="mykeystorepass" \
 -p JGROUPS_ENCRYPT_SECRET="sso-app-secret" \
 -p JGROUPS_ENCRYPT_KEYSTORE="jgroups.jceks" \
 -p JGROUPS_ENCRYPT_NAME="secret-key" \
 -p JGROUPS_ENCRYPT_PASSWORD="password" \
 -p SSO_ADMIN_USERNAME="admin" \
 -p SSO_ADMIN_PASSWORD="redhat" \
 -p SSO_REALM="demorealm" \
 -p SSO_TRUSTSTORE="truststore.jks" \
 -p SSO_TRUSTSTORE_PASSWORD="mykeystorepass" \
 -p SSO_TRUSTSTORE_SECRET="sso-app-secret"
--> Deploying template "openshift/sso75-https" to project sso-app-demo

     Red Hat Single Sign-On 7.5.3 (Ephemeral with passthrough TLS)
     ---------
     An example Red Hat Single Sign-On 7 application. For more information about using this template, see https://github.com/jboss-openshift/application-templates.

     A new Red Hat Single Sign-On service has been created in your project. The admin username/password for accessing the master realm via the Red Hat Single Sign-On console is admin/redhat. Please be sure to create the following secrets: "sso-app-secret" containing the keystore.jks file used for serving secure content; "sso-app-secret" containing the jgroups.jceks file used for securing JGroups communications; "sso-app-secret" containing the truststore.jks file used for securing Red Hat Single Sign-On requests.

     * With parameters:
        * Application Name=sso
        * Custom http Route Hostname=
        * Custom https Route Hostname=
        * Server Keystore Secret Name=sso-app-secret
        * Server Keystore Filename=keystore.jks
        * Server Keystore Type=
        * Server Certificate Name=jboss
        * Server Keystore Password=mykeystorepass
        * Datasource Minimum Pool Size=
        * Datasource Maximum Pool Size=
        * Datasource Transaction Isolation=
        * JGroups Secret Name=sso-app-secret
        * JGroups Keystore Filename=jgroups.jceks
        * JGroups Certificate Name=secret-key
        * JGroups Keystore Password=password
        * JGroups Cluster Password=yeSppLfp # generated
        * ImageStream Namespace=openshift
        * Red Hat Single Sign-On Administrator Username=admin
        * Red Hat Single Sign-On Administrator Password=redhat
        * Red Hat Single Sign-On Realm=demorealm
        * Red Hat Single Sign-On Service Username=
        * Red Hat Single Sign-On Service Password=
        * Red Hat Single Sign-On Trust Store=truststore.jks
        * Red Hat Single Sign-On Trust Store Password=mykeystorepass
        * Red Hat Single Sign-On Trust Store Secret=sso-app-secret
        * Container Memory Limit=1Gi

--> Creating resources ...
    service "sso" created
    service "secure-sso" created
    service "sso-ping" created
    route "sso" created
    route "secure-sso" created
    deploymentconfig "sso" created
--> Success
    Run 'oc status' to view your app.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部