Вопрос или проблема
В настоящее время я сталкиваюсь с проблемой настройки моего сервера 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 в медицинских системах.