Фон
Мы разрабатываем приложение Spring, которое выполняет криптографические операции.Требование проекта состоит в том, что реализация этого приложения должна быть независимой от конкретных библиотек HSM (поскольку клиент может иметь любой HSM), и, следовательно, мы использовали интерфейс SunPKCS11.Интерфейсу SunPKCS11 необходим путь к файлу библиотеки HSM, который реализует общий интерфейс PKCS11.Таким образом, любой HSM, в котором реализована библиотека PKCS11, будет работать с приложением.
Текущее состояние
У нас есть хост-компьютер для тестирования, на котором установлен HSM.Установщик HSM также предоставляет библиотеку, которая реализует интерфейс PKCS11.Мы планируем развернуть это приложение с помощью Docker.Поскольку приложение должно быть независимым от библиотеки HSM, мы создали образ докера, в котором не указана информация, специфичная для HSM.Тем не менее, у нас есть смонтированная полная папка lib (где присутствует библиотека реализации PKCS11) HSM с использованием файла docker-compose.Когда мы выполняем docker-compose, это выдает ошибку для библиотеки, которая принадлежит HSM (хотя она смонтирована в папке lib).
Ошибка при загрузке общей библиотеки xxx.so
Вопрос
- Должен ли я использовать докер в этом случае?Я видел обсуждения в Интернете, чтобы получить доступ к устройствам, используя докер, и ответом было в основном использовать какой-то другой образ докера, который зависит от конкретного устройства.Тем не менее, я не знаю, будет ли HSM для использования с приложением (на стороне клиента) иметь такой образ докера.
- Если так, будет ли хорошей идеей смонтировать папку lib в HSM?Во время установки HSM я установил файлы 3 об / мин.Эти 3 установки могут иметь дополнительные библиотеки, которые потребуются для взаимодействия с HSM.
- В случае правильного подхода, что является причиной ошибки?
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
docker-compose file
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.Дайте мне знать, если я пропущу что-то упомянуть.