Как добавить доверенный SSL-сертификат на сервер LinuxForHealth FHIR

Вопрос или проблема

В настоящее время я сталкиваюсь с проблемой настройки моего сервера LinuxForHealth FHIR и SSL-сертификатов. У меня сервер FHIR работает в качестве контейнера Docker на моем сервере, использует самоподписанный сертификат и работает по протоколу HTTPS через порт 9443.

Одновременно у меня есть веб-сайт, который также работает на этом же сервере, используя HTTPS через порты 80 и 443, с доверенным сертификатом (со всеми .pem файлами) от Let’s Encrypt. Моя цель – использовать сертификат Let’s Encrypt и для сервера LinuxForHealth FHIR.

Я ознакомился с документацией LinuxForHealth, касающейся хранилищ ключей, хранилищ доверия и настройки SSL-сертификатов (https://linuxforhealth.github.io/FHIR/guides/FHIRServerUsersGuide/#52-keystores-truststores-and-the-linuxforhealth-fhir-server), но мне трудно понять, как интегрировать сертификаты из одного и того же домена для контейнера Docker.

Если кто-то имеет опыт работы с LinuxForHealth и управлением SSL-сертификатами или успешно интегрировал доверенные сертификаты для сервера FHIR в Docker, я был бы очень благодарен за любые рекомендации или пошаговые инструкции.

Спасибо!

Моя текущая ситуация

Я не знаю, с чего начать. У меня есть файлы .pem, но в документации указано, что сервер запрашивает файл .p12?

Используя Docker Compose:

version: '3'
services:
  fhir-server:
    image: linuxforhealth/fhir-server:latest
    ports:
      - "9443:9443"
    volumes:
      - /path/to/letsencrypt/certs:/etc/letsencrypt/live/your_domain:ro
    environment:
      - FHIR_SERVER_SSL=true
      - FHIR_SERVER_SSL_KEYSTORE=/etc/letsencrypt/live/your_domain/fhir_server_cert.p12
      - FHIR_SERVER_SSL_KEYSTORE_PASSWORD=your_password
      - FHIR_SERVER_SSL_KEYSTORE_TYPE=PKCS12

Без Docker Compose:

docker run -d \
  --name fhir-server \
  -p 9443:9443 \
  -v /path/to/letsencrypt/certs:/etc/letsencrypt/live/your_domain:ro \
  -e FHIR_SERVER_SSL=true \
  -e FHIR_SERVER_SSL_KEYSTORE=/etc/letsencrypt/live/your_domain/fhir_server_cert.p12 \
  -e FHIR_SERVER_SSL_KEYSTORE_PASSWORD=your_password \
  -e FHIR_SERVER_SSL_KEYSTORE_TYPE=PKCS12 \
  linuxforhealth/fhir-server:latest

Замените /path/to/letsencrypt/certs на фактический путь, где находятся ваши сертификаты.
Измените your_domain на ваш фактический домен.
your_password должен совпадать с паролем, использованным при создании файла .p12.

Шаг 3: Настройка сервера FHIR
Убедитесь, что конфигурация вашего сервера FHIR знает, где искать новый сертификат:

Если вы используете переменные окружения, как показано выше в конфигурации Docker, сервер должен автоматически принять эти настройки. Однако, если вам нужно вручную настроить сервер (например, через свойства сервера или файл конфигурации), вы должны указать что-то вроде:
Используя Docker Compose:

version: '3'
services:
  fhir-server:
    image: linuxforhealth/fhir-server:latest
    ports:
      - "9443:9443"
    volumes:
      - /path/to/letsencrypt/certs:/etc/letsencrypt/live/your_domain:ro
    environment:
      - FHIR_SERVER_SSL=true
      - FHIR_SERVER_SSL_KEYSTORE=/etc/letsencrypt/live/your_domain/fhir_server_cert.p12
      - FHIR_SERVER_SSL_KEYSTORE_PASSWORD=your_password
      - FHIR_SERVER_SSL_KEYSTORE_TYPE=PKCS12

Без Docker Compose:

docker run -d \
  --name fhir-server \
  -p 9443:9443 \
  -v /path/to/letsencrypt/certs:/etc/letsencrypt/live/your_domain:ro \
  -e FHIR_SERVER_SSL=true \
  -e FHIR_SERVER_SSL_KEYSTORE=/etc/letsencrypt/live/your_domain/fhir_server_cert.p12 \
  -e FHIR_SERVER_SSL_KEYSTORE_PASSWORD=your_password \
  -e FHIR_SERVER_SSL_KEYSTORE_TYPE=PKCS12 \
  linuxforhealth/fhir-server:latest

Замените /path/to/letsencrypt/certs на фактический путь, где находятся ваши сертификаты.
Измените your_domain на ваш фактический домен.
your_password должен совпадать с паролем, использованным при создании файла .p12.

Шаг 3: Настройка сервера FHIR
Убедитесь, что конфигурация вашего сервера FHIR знает, где искать новый сертификат:

Если вы используете переменные окружения, как показано выше в конфигурации Docker, сервер должен автоматически принять эти настройки. Однако, если вам нужно вручную настроить сервер (например, через свойства сервера или файл конфигурации), вы должны указать что-то вроде:


fhir.server.ssl=true
fhir.server.ssl.keystore=/etc/letsencrypt/live/your_domain/fhir_server_cert.p12
fhir.server.ssl.keystore.password=your_password
fhir.server.ssl.keystore.type=PKCS12

Ответ или решение

Чтобы добавить доверенный SSL-сертификат на сервер LinuxForHealth FHIR, работающий в контейнере Docker, следуйте пошаговой инструкции ниже:

Шаг 1: Конвертация сертификата

Сертификаты Let’s Encrypt обычно предоставляются в виде файлов .pem. Поскольку сервер LinuxForHealth требует .p12 файл (формат PKCS12), вам необходимо выполнить конвертацию. Для этого используйте команду openssl:

openssl pkcs12 -export -out fhir_server_cert.p12 -inkey /path/to/letsencrypt/certs/privkey.pem -in /path/to/letsencrypt/certs/cert.pem -certfile /path/to/letsencrypt/certs/chain.pem -password pass:your_password

Шаг 2: Настройка Docker Compose

Убедитесь, что ваш Docker Compose файл правильно монтирует директорию с сертификатами и вы указываете путь к .p12 файлу:

version: '3'
services:
  fhir-server:
    image: linuxforhealth/fhir-server:latest
    ports:
      - "9443:9443"
    volumes:
      - /path/to/letsencrypt/certs:/etc/letsencrypt/live/your_domain:ro
    environment:
      - FHIR_SERVER_SSL=true
      - FHIR_SERVER_SSL_KEYSTORE=/etc/letsencrypt/live/your_domain/fhir_server_cert.p12
      - FHIR_SERVER_SSL_KEYSTORE_PASSWORD=your_password
      - FHIR_SERVER_SSL_KEYSTORE_TYPE=PKCS12

Шаг 3: Запуск контейнера без Docker Compose

Если вы предпочитаете не использовать Docker Compose, запустите контейнер с использованием следующей команды docker run:

docker run -d \
  --name fhir-server \
  -p 9443:9443 \
  -v /path/to/letsencrypt/certs:/etc/letsencrypt/live/your_domain:ro \
  -e FHIR_SERVER_SSL=true \
  -e FHIR_SERVER_SSL_KEYSTORE=/etc/letsencrypt/live/your_domain/fhir_server_cert.p12 \
  -e FHIR_SERVER_SSL_KEYSTORE_PASSWORD=your_password \
  -e FHIR_SERVER_SSL_KEYSTORE_TYPE=PKCS12 \
  linuxforhealth/fhir-server:latest

Заключение

В данном руководстве описаны шаги по интеграции доверенного SSL-сертификата на сервер LinuxForHealth FHIR, работающий в контейнере Docker. Основным аспектом является правильная конвертация и подключение сертификатов, что гарантирует безопасность и доверие к соединению вашего сервера.

Учитывая критичность и важность медицинских данных, обеспечение надёжной и безопасной настройки вашего сервера — задача первостепенной важности. Если у вас возникают сложности с выполнением этих шагов, рекомендую привлечь специалисты с экспертизой в области безопасности IT в медицинских системах.

Оцените материал
Добавить комментарий

Капча загружается...