第 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. 准备部署 复制链接链接已复制到粘贴板!
流程
- 使用包含 cluster:admin 角色的用户登录 OpenShift CLI。
创建一个新项目:
$ oc new-project sso-app-demo将
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 服务器创建信任存储。keytool 是 Java 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 应用程序模板需要部署以下内容:
- 用于加密 https 流量的 HTTPS 密钥存储,
- JGroups 密钥存储 用于加密集群中节点之间的 JGroups 通信,以及
- Red Hat Single Sign-On server truststore 用来保护 Red Hat Single Sign-On 请求
对于生产环境,红帽建议您使用通过已验证的证书颁发机构(CA)为 SSL 加密连接(HTTPS)购买的 SSL 证书。
如需有关如何使用自签名或购买的 SSL 证书创建密钥存储的更多信息,请参阅 JBoss 企业应用平台安全指南。
创建 HTTPS 密钥存储:
流程
生成 CA 证书。选择 并记得密码。提供相同的密码,当使用以下 CA 证书为证书签名请求进行签名 时:
$ openssl req -new -newkey rsa:4096 -x509 -keyout xpaas.key -out xpaas.crt -days 365 -subj "/CN=xpaas-sso-demo.ca"为 HTTPS 密钥存储生成私钥。提供
mykeystorepass作为密钥存储密码:$ keytool -genkeypair -keyalg RSA -keysize 2048 -dname "CN=secure-sso-sso-app-demo.openshift.example.com" -alias jboss -keystore keystore.jks为 HTTPS 密钥存储生成证书签名请求。提供
mykeystorepass作为密钥存储密码:$ keytool -certreq -keyalg rsa -alias jboss -keystore keystore.jks -file sso.csr
使用 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 环境支持此类语法。否则,您可能会在意外令牌 '(' 消息旁边遇到语法错误。将 CA 证书导入到 HTTPS 密钥存储中。提供
mykeystorepass作为密钥存储密码。回复yestoTrust this certificate? [no]:question:$ keytool -import -file xpaas.crt -alias xpaas.ca -keystore keystore.jks将签名的证书签名请求导入到 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 用于存放敏感信息,如密码或密钥存储。
为 HTTPS 和 JGroups 密钥存储创建机密,以及红帽单点登录服务器信任存储( 在上一节中 生成)。
$ oc create secret generic sso-app-secret --from-file=keystore.jks --from-file=jgroups.jceks --from-file=truststore.jks将这些 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_USERNAME、SSO_ADMIN_PASSWORD、HTTPS_PASSWORD、JGROUPS_ENCRYPT_PASSWORD 和 SSO_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_USERNAME、SSO_ADMIN_PASSWORD 和 SSO_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.