2
  • 背景

    我们正在开发一个执行加密操作的 Spring 应用程序。项目的要求是这个应用程序的实现应该独立于 HSM 特定的库(因为客户端可能有任何 HSM),因此我们使用了 SunPKCS11 接口。SunPKCS11 接口需要一个 HSM 库文件的路径,该文件实现了常见的 PKCS11 接口。这样,任何具有库实现 PKCS11 接口的 HSM 都可以与应用程序一起使用。

  • 当前状态

    我们有用于测试 HSM 安装位置的主机。HSM 安装程序还提供了实现 PKCS11 接口的库。我们计划使用 Docker 部署这个应用程序。由于应用程序应该独立于 HSM 库,因此我们创建了 docker 映像,其中没有提及 HSM 特定信息。但是,我们使用 docker-compose 文件挂载了 HSM 的完整 lib 文件夹(其中存在 PKCS11 实现库)。当我们执行 docker-compose up 时,它会为属于 HSM 的库提供错误(尽管它安装在 lib 文件夹中)。

加载共享库 xxx.so 时出错

  • 问题

    1. 在这种情况下我应该使用 docker 吗?我在互联网上看到了使用 docker 访问设备的讨论,答案主要是使用其他一些特定于设备的 docker 映像。但是,我不知道要与应用程序(在客户端)一起使用的 HSM 是否会有这样的 docker 映像。
    2. 如果是这样,挂载 HSM 的 lib 文件夹是个好主意吗?在 HSM 安装期间,我安装了 3 个 rpm 文件。这 3 个安装可能具有与 HSM 交互所需的其他库。
    3. 如果我正在做的是正确的方法,错误的原因是什么?

Dockerfile

FROM some/url/xxxbuild:openjdk8u151-alpine3.7-1.0.0
LABEL maintainer "Team"
ENV APP_USER myapp
ENV APP_HOME /opt/my/app
USER $APP_USER
RUN madir -p $APP_HOME/config

码头工人撰写文件

my-microservice:
image: my-microservice:1.1.0-SNAPSHOT
container_name: my-microservice-container
restart: on-failure
environment:
  SERVER_PORT: 9999
  JAVA_OPTS: -Dlog4j.configurationFile=/opt/gd/app/config/log4j2.xml
ports:
  - 8888:9999
volumes:
  - ./applicationSpecificFile:/opt/gd/app/config
  - /opt/hsm/lib:/opt/hsm/lib       <-- HSM Specific lib files

我是 Docker 和 Linux 的新手。让我知道,以防我错过提及某些事情。

4

0 回答 0