从 Keycloak 下载并导入 X.509 客户端证书

Download and import X.509 client certificate from Keycloak

我在本地主机上设置了 Keycloak 4.8.2-Final 并启用了 SSL,如 https://www.keycloak.org/docs/latest/server_admin/index.html#_x509 上的文档所述。

服务器可以启动,但我无法在 localhost:8443

上打开服务器页面
openssl s_client -connect 127.0.0.1:8443

由于 SSL 错误代码 42

4566025836:error:1401E412:SSL routines:CONNECT_CR_FINISHED:sslv3 alert bad certificate:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.230.1/libressl-2.6/ssl/ssl_pkt.c:1205:SSL alert number 42), which means that the client certificate problem. 

但我的想象是服务器应该将我重定向到登录页面。登录后,服务器应生成客户端证书并要求我下载证书并将其导入我的浏览器。之后我应该能够连接到服务器而无需任何进一步的身份验证,因为我已经拥有 Keycloak 信任的客户端证书。

我做错了什么?或者目前的keycloak还不支持这个过程?

根据文档不支持在用户输入用户名和密码后下载和导入证书。前两步总是:

A client sends an authentication request over SSL/TLS channel During SSL/TLS handshake, the server and the client exchange their x.509/v3 certificates

因此standalone.xml中的配置只能是"REQUESTED"。在没有真正理解的情况下,我将其更改为 "REQUIRED",它总是要求提供客户端证书。如果客户端没有,它将失败。对于 "REQUESTED",客户端证书只是可选的。

<subsystem xmlns="urn:jboss:domain:undertow:4.0">
    ....
    <server name="default-server">
        <https-listener name="default"
                        socket-binding="https"
                        security-realm="ssl-realm"
                        verify-client="REQUESTED"/>
    </server>
</subsystem>