denniskniep/keycloak-hsm-crypki

GitHub: denniskniep/keycloak-hsm-crypki

Keycloak 扩展,通过 Crypki 服务对接底层 HSM 或 PKCS#11 设备进行安全签名,实现私钥的硬件级保护。

Stars: 2 | Forks: 2

# Keycloak HSM Crypki Keycloak 扩展,该扩展使用 [Crypki Service](https://github.com/theparanoids/crypki) 通过底层 HSM(Hardware Security Module,硬件安全模块)或其他 PKCS #11 设备进行签名。 此扩展基于 [Keycloak HSM Extension](https://github.com/denniskniep/keycloak-hsm)。本项目的当前目的是展示如何使用 [Keycloak HSM Extension](https://github.com/denniskniep/keycloak-hsm)。 ## 演示 ### 快速开始 ``` sudo docker-compose up --build ``` ### 配置 * 打开 http://localhost:8080/admin/master/console/ (凭据:`admin:password`) * 导航至 "Realm Settings > Keys > Providers" * 点击 "Add Provider" * 选择 "crypki-hsm" * 设置以下数值: ``` URL: https://crypki:4443 Name: sign-blob-key mTLS CA Certificate Path: /opt/keycloak/crypki/tls-crt/ca.crt mTLS Client Certificate Path: /opt/keycloak/crypki/tls-crt/client.crt mTLS Client Private Key Path: /opt/keycloak/crypki/tls-crt/client.key Server Certificate Path: /opt/keycloak/crypki/tls-crt/server.crt ``` ### 详情 Crypki 在公共 registry 中没有 docker image。因此,[这个 fork](https://github.com/denniskniep/crypki) 在 ghcr.io 上托管了该镜像 ## 开发、测试与调试 构建 Keycloak Extension ``` mvn clean install ``` 使用 docker-compose 启动环境 ``` sudo docker-compose -f docker-compose.debug.yaml up --build ``` 连接到 debug 端口(例如使用 IntelliJ) ``` Host: localhost Port: 8787 Args: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8787 ``` ## Crypki ### RestAPI 获取所有密钥 ``` curl -X GET https://localhost:4443/v3/sig/blob/keys ``` 获取公钥 ``` curl -X GET https://localhost:4443/v3/sig/blob/keys/sign-blob-key ``` 签名摘要 ``` curl -X POST -H "Content-Type: application/json" https://localhost:4443/v3/sig/blob/keys/sign-blob-key --data '{"digest": "myS064oomwdla8bVuvufU4WNpXmmsDReGstK0frG7K4=", "hash_algorithm": "SHA256"}' ``` ### SoftHSM 命令 通过 Docker exec 进入 crypki 容器 列出所有插槽: ``` pkcs11-tool --module "/usr/lib/softhsm/libsofthsm2.so" --pin 123456 -L ``` 测试特定插槽 ``` pkcs11-tool --module "/usr/lib/softhsm/libsofthsm2.so" --login --slot 0x70fc6051 --pin 123456 --test ``` 列出对象 ``` pkcs11-tool --module "/usr/lib/softhsm/libsofthsm2.so" --login --slot 0x70fc6051 --pin 123456 --list-objects ``` 读取公钥 ``` pkcs11-tool --module "/usr/lib/softhsm/libsofthsm2.so" --login --slot 0x70fc6051 --pin 123456 --read-object --type pubkey --label sign_blob | base64 ``` 支持的机制 ``` pkcs11-tool --module "/usr/lib/softhsm/libsofthsm2.so" --login --slot 0x70fc6051 --pin 123456 --label sign_blob -M ``` 签名 ``` echo -n '' | base64 --decode > data cat data | pkcs11-tool --module "/usr/lib/softhsm/libsofthsm2.so" --login --slot 0x70fc6051 --pin 123456 --label sign_blob --sign --mechanism RSA-PKCS > data.sig ```
标签:Crypki, CVE, Docker Compose, HSM, IdM, JS文件枚举, Keycloak, mTLS, PKCS#11, REST API, 令牌签名, 单点登录, 双向认证, 域名收集, 域名枚举, 安全基础设施, 扩展插件, 数字签名, 智能代码审计, 硬件安全模块, 请求拦截, 身份与访问管理