Nitrokey/nethsm-pkcs11
GitHub: Nitrokey/nethsm-pkcs11
为 Nitrokey NetHSM 硬件安全模块提供标准 PKCS#11 接口的适配层,让现有应用程序无需改造即可使用硬件级密钥保护。
Stars: 38 | Forks: 12
# Nitrokey NetHSM 的 PKCS#11 模块
[][codecov-url]
本模块允许使用 [Nitrokey NetHSM](https://www.nitrokey.com/products/nethsm) 作为 PKCS#11 操作的后端。
有关更多详细信息,请参阅 [支持的功能列表](./features.md)。
## 下载
从 [发布页面](https://github.com/Nitrokey/nethsm-pkcs11/releases) 下载最新的二进制文件。
## 文档
请按照 [文档](https://docs.nitrokey.com/nethsm/pkcs11-setup.html) 获取使用说明。
## 兼容性
nethsm-pkcs11 与这些 NetHSM 版本兼容:
| NetHSM Version | Compatibility | Notes |
| :------------: | :-----------: | ----- |
| [v1.0][nethsm-v1.0] | limited | |
| [v2.0][nethsm-v2.0] | limited | |
| [v2.1][nethsm-v2.1] | limited | |
| [v2.2][nethsm-v2.2] | limited | |
| [v3.0][nethsm-v3.0] | limited | 使用 PKCS1 机制的 RSA 签名不起作用。 |
| [v3.1][nethsm-v3.1] | full | |
完全兼容意味着 NetHSM PKCS#11 模块的所有功能都可以在此版本中使用。
有限兼容意味着此版本仅支持部分功能。
有关新功能版本要求的更多详细信息,请参阅 [更新日志](./CHANGELOG.md)。
## 调试选项
将 `RUST_LOG` 环境变量设置为 `trace`、`debug`、`info`、`warn` 或 `err` 以更改日志级别。
## Docker 示例
出于测试和开发目的,提供了两个在 Nginx 和 Apache 中使用 PKCS11 驱动程序的示例。
它们各自需要使用 `container//generate.sh` 生成的证书。
可以使用以下命令构建它们:
```
# 构建 images
docker build -t nginx-testing -f container/nginx/Dockerfile .
docker build -t apache-testing -f container/apache/Dockerfile .
```
假设 NetHSM 运行在 localhost:8443,则可以使用以下命令运行它们:
```
docker run --net=host nginx-testing:latest
docker run --net=host apache-testing:latest
```
NetHSM 应已配置以下配置:
```
nitropy nethsm --host localhost:8443 --no-verify-tls provision -u 0123456789 -a Administrator
nitropy nethsm --host localhost:8443 --no-verify-tls add-user -n Operator -u operator -p opPassphrase -r Operator
```
## 测试重试
有一组测试使用多个实例运行,并测试重试和超时机制。
它们需要:访问 `sudo`(或以 root 身份运行)和 `podman`。
您可以运行以下命令:
```
USE_SUDO=true cargo t -p nethsm_pkcs11 --test basic -- multi_instance_retries
# 或者如果以 root 身份运行则移除 sudo 的使用
cargo t -p nethsm_pkcs11 --test basic -- multi_instance_retries
```
## 构建
需要 `gcc` 和至少版本 (MSRV) 为 1.70 的可用 Rust 工具链。
```
cargo build --release
```
动态库将位于 `${CARGO_TARGET_DIR:-target}/release/libnethsm_pkcs11.so`。
### Alpine Linux
您需要安装 `musl-dev` 和 `gcc`:
```
apk add musl-dev gcc
```
要在 Alpine Linux 上构建,您需要添加 C 参数 `target-feature=-crt-static`:
```
RUSTFLAGS="-C target-feature=-crt-static" cargo build --release
```
标签:Apache, CVE, Docker, HSM, NetHSM, Nginx, Nitrokey, PKCS#11, RSA, Rust, SamuraiWTF, SSL/TLS, 加密令牌, 可视化界面, 后端驱动, 安全防御评估, 密码学, 密钥存储, 开源, 手动系统调用, 数字签名, 数据加密, 硬件安全模块, 网络安全, 网络流量审计, 请求拦截, 远程密钥, 通知系统, 隐私保护