第 3 章 执行高级步骤


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

3.1. 部署 passthrough TLS 终止模板

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

3.1.1. 准备部署

流程

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

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

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

3.1.2. 为红帽单点登录服务器创建 HTTPS 和Groups 密钥存储,以及 Truststore

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

使用重新加密 TLS 终止的 Red Hat Single Sign- On 应用程序模板 不需要预期 HTTPS 和 JGroups 密钥存储和 Red Hat Single Sign-On 服务器信任存储已预先准备好。

再加密模板使用 OpenShift 的内部服务服务证书机密来自动创建 HTTPS 和 JGroups 密钥存储。也会自动创建 Red Hat Single Sign-On 服务器信任存储。它会预先填充 Java 系统路径中找到的所有已知可信 CA 证书文件。

注意

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

先决条件

使用 passthrough TLS 终止的红帽单点登录应用程序模板需要部署以下内容:

注意

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

如需了解有关如何使用自签名或购买 SSL 证书的密钥存储的更多信息,请参阅 JBoss Enterprise Application Platform 安全指南

创建 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"
    Copy to Clipboard
  2. 为 HTTPS 密钥存储生成一个私钥。提供 mykeystorepass 作为密钥存储密码:

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

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

    $ openssl x509 -req -extfile  <(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
    Copy to Clipboard
    注意

    要使前面的命令在一个行中正常工作,命令包含进程替换( <()语法)。确保您当前的 shell 环境支持此类语法。否则,您可能会遇到与 意外令牌 '(' 消息相关的语法错误

  2. 将 CA 证书导入到 HTTPS 密钥存储中。提供 mykeystorepass 作为密钥存储密码。回复这个证书?[no]: 问题:

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

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

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

提供 密钥密码

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

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

提供 mykeystorepass 作为信任存储密码。回复这个证书?[no]: 问题:

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

3.1.3. 创建 secret

流程

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

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

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

    $ oc secrets link default sso-app-secret
    Copy to Clipboard

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

在您创建了 keystoressecrets 后,使用 oc 命令部署一个透传的 TLS termination 模板。

3.1.4.1. oc 命令指南

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

对于生产环境,红帽建议您查阅机构的现场策略,以获取为红帽单点登录服务器的管理员用户帐户生成强用户名和密码的指导,以及红帽单点登录服务器的信任存储。

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

注意

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

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

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

3.1.4.2. oc 命令示例

$ oc new-app --template=sso76-ocp4-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/sso76-ocp4-https" to project sso-app-demo

     Red Hat Single Sign-On 7.6.11 (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.
Copy to Clipboard
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat