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 的情况下开箱即用,只要您坚持使用
localhost
、127.0.0.1
、10.x.x.x
、192.x.x 和172.16.
等私有 IP 地址。如果您没有在服务器上配置的 SSL/HTTPS,或者尝试从非专用 IP 地址通过 HTTP 访问 Red Hat Single Sign-On,则会出现错误。x.x
- 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。这涉及
- 获取或生成包含 SSL/HTTP 流量的私钥和证书的密钥存储
- 配置红帽单点登录服务器以使用此密钥对和证书。
8.3.1.1. 创建证书和 Java 密钥存储 复制链接链接已复制到粘贴板!
为了允许 HTTPS 连接,您需要获取自签名或第三方签名证书并将其导入到 Java 密钥存储,然后才能在部署 Red Hat Single Sign-On 服务器的 web 容器中启用 HTTPS。
8.3.1.1.1. 自签名证书 复制链接链接已复制到粘贴板!
在开发过程中,您可能没有可用的第三方签名证书来测试红帽单点登录部署,因此您将需要使用 Java JDK 附带的 keytool
程序生成自签名证书。
当您看到 问题是您的名字和姓氏
时,请提供您安装该服务器的机器的 DNS 名称。出于测试目的,应使用 localhost
。执行此命令后,keycloak.jks
文件将与您执行 keytool
命令的同一目录中生成。
如果您希望第三方签名证书,但没有有一个证书,您可以获得位于 cacert.org 的免费证书。但是,您首先需要使用以下步骤。
流程
生成证书请求:
keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
$ keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
您的域
是生成此证书的 DNS 名称。keytool 生成请求:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将此 CA 请求发送到您的证书颁发机构(CA)。
CA 将为您签发签名证书并将其发送给您。
获取并导入 CA 的 root 证书。
您可以从 CA 下载证书(换句话说:root.crt)并导入如下:
keytool -import -keystore keycloak.jks -file root.crt -alias root
$ keytool -import -keystore keycloak.jks -file root.crt -alias root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将您的新 CA 生成的证书导入到您的密钥存储中:
keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
$ keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3.1.2. 配置 Red Hat Single Sign-On 以使用 Keystore 复制链接链接已复制到粘贴板!
现在,您已具有适当证书的 Java 密钥存储,您需要配置 Red Hat Single Sign-On 安装才能使用它。
流程
- 编辑 standalone.xml、standalone-ha.xml 或 host.xml 文件,以使用密钥存储并启用 HTTPS。
将密钥存储文件移到部署的 配置/ 目录中,或者您选择的位置或提供该文件的绝对路径。
如果您使用绝对路径,请从您的配置中删除可选的
relative-to
参数(See 操作模式)。使用 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)
$ /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 Copied! Toggle word wrap Toggle overflow 如果使用域模式,应在每个主机中使用
/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)
$ /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 Copied! Toggle word wrap Toggle overflow 在独立或主机配置文件中,
security-realms
元素应类似如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在独立或每个域配置文件中,搜索任何
安全域
实例。 修改
https-listener
以使用创建的域:/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=security-realm, value=UndertowRealm)
$ /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=security-realm, value=UndertowRealm)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用域模式,为命令添加与以下内容一起使用的配置集:
/profile=<profile_name>/
。生成的元素
server name="default-server"
是指subsystem xmlns="urn:jboss:domain:undertow:12.0"
的子元素,它应包含以下小节:Copy to Clipboard Copied! Toggle word wrap Toggle overflow