7.3. 设置 HTTPS/SSL
默认情况下,Red Hat Single Sign-On 没有设置为处理 SSL/HTTPS。强烈建议您在 Red Hat Single Sign-On 服务器本身或 Red Hat Single Sign-On 服务器前在反向代理中启用 SSL。
这个默认行为由每个 Red Hat Single Sign-On 域的 SSL/HTTPS 模式定义。服务器管理指南中的 更为详细地讨论,但让我们提供了一些上下文以及这些模式的简要概述。
- 外部请求
-
Red Hat Single Sign-On 可以在没有 SSL 的情况下运行,只要您坚持使用私有 IP 地址(如
localhost,127.0.0.1,10.0.x.x,192.168.x.x, 和172.16.x.x)。如果您没有在服务器上配置 SSL/HTTPS,或者您试图通过 HTTP 从非专用 IP 地址访问 Red Hat Single Sign-On,则会出现错误。 - none
- Red Hat Single Sign-On 不需要 SSL。您应该真正在开发过程中使用。
- 所有请求
- Red Hat Single Sign-On 需要 SSL 用于所有 IP 地址。
每个域的 SSL 模式可以在 Red Hat Single Sign-On 管理控制台中配置。
7.3.1. 为 Red Hat Single Sign-On 服务器启用 SSL/HTTPS 复制链接链接已复制到粘贴板!
如果您不使用反向代理或负载均衡器来处理 HTTPS 流量,则需要为 Red Hat Single Sign-On 服务器启用 HTTPS。这涉及
- 获取或生成包含 SSL/HTTP 流量的私钥和证书的密钥存储
- 配置 Red Hat Single Sign-On 服务器以使用此密钥对和证书。
7.3.1.1. 创建证书和 Java 密钥存储 复制链接链接已复制到粘贴板!
为了允许 HTTPS 连接,您需要获取自签名或第三方签名的证书,并将其导入到 Java 密钥存储中,然后才能在您将 Red Hat Single Sign-On 服务器部署到 web 容器中启用 HTTPS。
7.3.1.1.1. 自签名证书 复制链接链接已复制到粘贴板!
在开发中,您可能没有第三方签名的证书来测试 Red Hat Single Sign-On 部署,因此您需要使用与 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
其中 yourdomain 是为其生成此证书的 DNS 名称。keytool 生成请求:
将此 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
最后一步是将生成的新 CA 证书导入到密钥存储中:
keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
$ keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
7.3.1.2. 配置红帽单点登录以使用密钥存储 复制链接链接已复制到粘贴板!
现在,您已有一个带有适当证书的 Java 密钥存储,您需要配置 Red Hat Single Sign-On 安装以使用它。第一步是将密钥存储文件移到部署的 configuration/ 目录中,并编辑 standalone.xml、standalone-ha.xml 或 domain.xml 文件,以使用密钥存储并启用 HTTPS。(请参阅 操作模式)。
在独立或域配置文件中,搜索 security-realms 元素并添加:
找到元素 服务器 name="default-server" (它是 子系统 xmlns="urn:jboss:domain:undertow:4.0"的子元素,并添加: