如何使用Azure PostgreSQL在keycloak中强制执行SSL

时间:2018-01-19 10:07:12

标签: postgresql azure ssl docker keycloak

我正在尝试使用docker容器配置keycloak以使用PostgreSQL(使用Azure Database for PostgreSQL)运行。我能够按照密钥泄露文档here中的指示执行此操作。

我面临的问题是,Azure Database for PostgreSQL默认情况下将此选项“强制SSL连接”设置为“启用”,并且keycloak服务器无法使用它。它会在服务器启动时抛出以下错误。

ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 49) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./auth:
Caused by: org.postgresql.util.PSQLException: FATAL: SSL connection is required. Please specify SSL options and retry.

如果禁用“强制SSL连接”选项,则可以正常工作。

我想知道如何指定此选项以使用keycloak。

我使用自定义Dockerfile下载并启动keycloak服务器,并使用docker run命令将数据源参数作为环境变量传递。我已经尝试this approach,当我将其指向我的PostgreSQL数据源而没有任何修改时工作正常。但是,当我将其更改为与我自己的Dockerfile兼容时,它会产生相同的错误。

提前致谢。

2 个答案:

答案 0 :(得分:1)

所以这就是我的所作所为。

我忽略了jboss共享的最新Dockerfile(可用here)并采用了我需要的版本。早些时候我试图通过我自己添加postgreSQL配置,因为keycloak文件建议。由于它现在支持开箱即用,我改变了我的Dockerfile以与jboss Dockerfile兼容,用于keycloak。

我也介绍了新的环境。变量以通过将ssl=true表示为引导here

来强制执行SSL连接

答案 1 :(得分:0)

FATAL: SSL connection is required. Please specify SSL options and retry.

我已经看到,当PostgreSQL服务器上的防火墙规则中不包含客户端IP地址时,就会发生这种情况。尝试使用az postgres server firewall-rule list --resource-group --server-name

在门户的“连接安全性”页面或Azure CLI中为您的IP打开防火墙。