首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SoftHSM库公开给主机中运行的代码

将SoftHSM库公开给主机中运行的代码
EN

Stack Overflow用户
提问于 2019-06-25 14:17:08
回答 1查看 2K关注 0票数 0

我正在使用本地安装在我的计算机上的SoftHSMv2包在节点-webcrypto-p11中生成键盘。我希望为SoftHSM设置一个码头容器,这样任何开发人员都可以在repo中使用坞文件构建映像并运行容器,而不必完成构建SoftHSM的整个步骤。

我目前正在使用这个https://github.com/psmiraglia/docker-softhsm为SoftHSM构建映像并运行容器。但我不确定如何在代码中访问容器中的库。目前我正在使用下面提供的代码。是否有方法可以访问容器中的库。注意:这只是为了使其他开发人员的生命不被用于部署。

代码语言:javascript
复制
import {
    Crypto
} from 'node-webcrypto-p11';
// Need to set the library path from container.
// The given below path is for host machine.
const crypto = new Crypto({
    library: "/usr/local/lib/softhsm/libsofthsm2.so",
    name: "SoftHSMv2",
    slot: 0,
    readWrite: true,
    pin: "0987654321",
});
EN

回答 1

Stack Overflow用户

发布于 2020-06-16 08:46:51

正如@david-maze所说,SoftHSMv2是一个公正的库,只能在本地使用。在Ubuntu20.04中,它可以作为标准存储库中的deb包使用。

注释 SoftHSMv2根本不用于生产用途,它可以用于开发目的,因为这种硬件非常昂贵。它有PKCS11接口,因此所有HSM的代码应该是相同的,可以使用这个接口。

顺便说一句,您可以将SoftHSMv2与pkcs11-proxy/daemon https://github.com/SUNET/pkcs11-proxy一起远程使用。看来它已经被废弃了,但仍在运作中。再说一次,这是,而不是生产变体。

那么如何在Ubuntu20.04中使用它呢?

在服务器上。

  1. 安装用于构建pkcs11-proxy的依赖项
代码语言:javascript
复制
$ apt-get install -y \
    ca-certificates \
    git-core \
    build-essential \
    cmake \
    libssl-dev \
    libseccomp-dev
  1. 克隆代码:
代码语言:javascript
复制
$ git clone https://github.com/SUNET/pkcs11-proxy
  1. 构建并安装:
代码语言:javascript
复制
$ cd pkcs11-proxy && \
  cmake . && \
  make && \
  make install
  1. 使用依赖项安装SoftHSM2:
代码语言:javascript
复制
$ apt-get install -y \
    softhsm2 \
    opensc \
    gnutls-bin \
    libengine-pkcs11-openssl1.1
  1. SoftHSM中的Init插槽/令牌:
代码语言:javascript
复制
$ softhsm2-util --init-token --slot 0 --label "main" \
                                      --pin "123456" \
                                      --so-pin "78910"

别忘了选择更好的价值观。6.现在您可以启动pkcs11-proxy

代码语言:javascript
复制
$ export PKCS11_DAEMON_SOCKET="tcp://0.0.0.0:5657"
$ /usr/local/bin/pkcs11-daemon /usr/lib/softhsm/libsofthsm2.so

在客户身上。

  1. 同样,构建pkcs11-proxy或仅从前面的步骤复制libpkcs11-proxy.so库:
代码语言:javascript
复制
$ apt-get install -y \
    ca-certificates \
    git-core \
    build-essential \
    cmake \
    libssl-dev \
    libseccomp-dev

$ git clone https://github.com/SUNET/pkcs11-proxy

$ cd pkcs11-proxy && \
cmake . && \
make && \
make install
  1. 现在您可以通过网络远程使用您的SoftHSM:
代码语言:javascript
复制
$ export PKCS11_PROXY_SOCKET="tcp://ip_or_domain_of_softhsm:5657"
$ pkcs11-tool --module=/usr/local/lib/libpkcs11-proxy.so -L
代码语言:javascript
复制
Available slots:
Slot 0 (0x5b763d80): SoftHSM slot ID 0x5b763d80
  token label        : main
  token manufacturer : SoftHSM project
  token model        : SoftHSM v2
  token flags        : login required, rng, token initialized, PIN initialized, other flags=0x20
  hardware version   : 2.5
  firmware version   : 2.5
  serial num         : 27c11aa55b763d80
  pin min/max        : 4/255
Slot 1 (0x1): SoftHSM slot ID 0x1
  token state:   uninitialized
  1. 您还可以通过pkcs11-toollibpkcs11-proxy.so生成新的密钥/上传自己的密钥等。
代码语言:javascript
复制
$ pkcs11-tool --module=/usr/local/lib/libpkcs11-proxy.so -l --keypairgen --key-type rsa:2048 --id 100 --label mykey
Logging in to "main".
Please enter User PIN: 
Key pair generated:
Private Key Object; RSA 
  label:      mykey
  ID:         0100
  Usage:      decrypt, sign, unwrap
  Access:     sensitive, always sensitive, never extractable, local
Public Key Object; RSA 2048 bits
  label:      mykey
  ID:         0100
  Usage:      encrypt, verify, wrap
  Access:     local
代码语言:javascript
复制
$ pkcs11-tool --module=/usr/local/lib/libpkcs11-proxy.so -O -l
Using slot 0 with a present token (0x2561b147)
Logging in to "main".
Please enter User PIN: 
Private Key Object; RSA 
  label:      my_key
  ID:         0100
  Usage:      decrypt, sign, unwrap
  Access:     sensitive
Public Key Object; RSA 2048 bits
  label:      my_key
  ID:         0100
  Usage:      encrypt, verify, wrap
  Access:     none

要获取更多信息,请阅读pkcs11-tool文档。TLS加密也是支持的,但不稳定,至少对我来说是https://github.com/SUNET/pkcs11-proxy/blob/master/USAGE#L56

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56756141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档