bin/kc.[sh|bat] start --https-certificate-file=/path/to/certfile.pem --https-certificate-key-file=/path/to/keyfile.pem
传输层安全协议(简称:TLS)对于通过安全通道交换数据至关重要。对于生产环境,您绝不应该通过 HTTP 暴露 Keycloak 端点,因为敏感数据是 Keycloak 与其他应用程序交换的核心内容。在本指南中,您将学习如何配置 Keycloak 以使用 HTTPS/TLS。
Keycloak 可以配置为使用 PEM 格式的文件或 Java 密钥库加载所需的证书基础设施。当两种方式都配置时,PEM 文件优先于 Java 密钥库。
当您使用一对匹配的 PEM 格式证书和私钥文件时,您可以通过运行以下命令配置 Keycloak 以使用它们
bin/kc.[sh|bat] start --https-certificate-file=/path/to/certfile.pem --https-certificate-key-file=/path/to/keyfile.pem
Keycloak 会在内存中从这些文件创建一个密钥库,并在之后使用此密钥库。
当没有显式配置密钥库文件,但 http-enabled
设置为 false 时,Keycloak 会查找 conf/server.keystore
文件。
作为替代方案,您可以使用现有的密钥库,方法是运行以下命令
bin/kc.[sh|bat] start --https-key-store-file=/path/to/existing-keystore-file
密钥库的可识别文件扩展名
.p12
、.pkcs12
和 .pfx
用于 pkcs12 文件
.jks
和 .keystore
用于 jks 文件
.key
、.crt
和 .pem
用于 pem 文件
如果您的密钥库没有与其文件类型匹配的扩展名,您还需要设置 https-key-store-type
选项。
您可以使用 https-key-store-password
选项为您的密钥库设置安全密码
bin/kc.[sh|bat] start --https-key-store-password=<value>
如果未设置密码,则使用默认密码 password
。
避免使用 CLI 或将其添加到 conf/keycloak.conf
文件中以明文形式设置密码。而是使用最佳实践,例如使用 vault / 挂载的 secret。有关更多详细信息,请参阅 使用 vault 和 为生产环境配置 Keycloak。
默认情况下,Keycloak 不启用已弃用的 TLS 协议。如果您的客户端仅支持已弃用的协议,请考虑升级客户端。但是,作为临时解决方法,您可以通过运行以下命令启用已弃用的协议
bin/kc.[sh|bat] start --https-protocols=<protocol>[,<protocol>]
要同时允许 TLSv1.2,请使用如下命令:kc.sh start --https-protocols=TLSv1.3,TLSv1.2
。