EJBCA

`EJBCA<https://www.ejbca.org/>`__ 是一个 PKI 证书管理机构软件,可作为开放源代码使用。

要在 EJBCA 中使用 NetHSM,首先需要`设置<pkcs11-setup.html>`__ NetHSM PKCS#11 模块。

然后在``/etc/ejbca/conf/web.properties`` 文件中添加一个条目,配置 EJBCA 以使用 NetHSM PKCS#11 模块:

cryptotoken.p11.lib.418.name=NetHSM
cryptotoken.p11.lib.418.file=/usr/lib/nitrokey/libnethsm_pkcs11.so

备注

名称中的``418`` 是一个索引,对于配置文件中的每个 PKCS#11 模块都必须是唯一的。

要从接口生成密钥,需要在``p11nethsm.conf`` 文件中将``enable_set_attribute_value`` 选项设为 true。

警告

由于与 Sun PKCS11 提供程序的集成问题,从 EJBCA 生成的密钥将使用随机名称,而不是接口中给出的名称。

重新启动 EJBCA 后,你可以在 EJBCA 管理 GUI``https://mycahostname/ejbca/adminweb/cryptotoken/cryptotokens.xhtml`` 添加一个新的加密令牌。加密令牌类型是``PKCS#11 Crypto Token``,加密令牌名称是``NetHSM``。

执行示例

如果您想用给出的示例进行实验,可以使用 git 克隆`nethsm-pkcs11 仓库<https://github.com/Nitrokey/nethsm-pkcs11>`__ 并运行以下命令:

  • 配置 NetHSM,可以是一个真正的 NetHSM,也可以是一个容器。更多信息,请参阅`入门指南<getting-started>`__。

  • 在``container/ejbca/p11nethsm.conf`` 中更改 libnethsm_pkcs11 配置,使其与 NetHSM 匹配。

  • 建造集装箱

    docker build -f container/ejbca/Dockerfile . -t pkcs-ejbca
    
  • 运行容器。

    docker run --rm -it -p 9443:8443 -p 9080:8080 -h mycahostname -e TLS_SETUP_ENABLED="simple" pkcs-ejbca
    

集装箱可在`https://localhost:9443/<https://localhost:9443/>`___。