You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Docker部署的LinuxForHealth FHIR Server配置Let's Encrypt可信SSL证书

如何为Docker部署的LinuxForHealth FHIR Server配置Let's Encrypt可信SSL证书

别慌,我之前帮朋友处理过几乎一模一样的场景,核心就是把Let's Encrypt的PEM格式证书转换成FHIR Server要求的PKCS12(.p12)密钥库,再调整Docker挂载和服务器配置就行,一步步来:

第一步:把Let's Encrypt的PEM文件转换成PKCS12格式

LinuxForHealth FHIR Server确实依赖PKCS12格式的密钥库,所以先处理证书格式转换。假设你手里有这两个关键文件:

  • fullchain.pem:包含你的域名证书+Let's Encrypt的中间证书链
  • privkey.pem:你的域名专属私钥

在宿主机上执行这条openssl命令(记得替换成你的实际文件路径,还要设置一个自定义密码,这个密码后面要用到):

openssl pkcs12 -export -out fhir-server-cert.p12 -inkey /path/to/privkey.pem -in /path/to/fullchain.pem -name "fhir-server"

执行后会提示你输入导出密码,一定要记牢,后续配置要用到它。

第二步:准备Docker可访问的证书与配置目录

因为Docker容器需要读取证书和配置文件,先在宿主机上创建专门的目录:

mkdir -p /opt/linuxforhealth/fhir/certs
mkdir -p /opt/linuxforhealth/fhir/config

把刚才生成的fhir-server-cert.p12移动到证书目录,还要调整权限确保容器能读取:

mv fhir-server-cert.p12 /opt/linuxforhealth/fhir/certs/
chmod 644 /opt/linuxforhealth/fhir/certs/fhir-server-cert.p12

第三步:配置FHIR Server的SSL参数

创建或修改FHIR Server的application.yaml配置文件,放到刚才的/opt/linuxforhealth/fhir/config/目录下,重点配置SSL部分:

server:
  ssl:
    enabled: true
    key-store-type: PKCS12
    key-store: /opt/certs/fhir-server-cert.p12
    key-store-password: 你刚才设置的导出密码
    key-alias: fhir-server

注意这里的key-store是容器内部的路径,后面挂载时要对应上。

第四步:修改Docker启动命令(或docker-compose配置)

让容器挂载我们准备好的证书和配置目录,替换原来的启动命令。如果用docker run:

docker run -d \
  --name linuxforhealth-fhir \
  -p 9443:9443 \
  -v /opt/linuxforhealth/fhir/config:/opt/fhir/config \
  -v /opt/linuxforhealth/fhir/certs:/opt/certs \
  linuxforhealth/fhir-server:latest

如果用docker-compose,对应的配置块如下:

services:
  fhir-server:
    image: linuxforhealth/fhir-server:latest
    container_name: linuxforhealth-fhir
    ports:
      - "9443:9443"
    volumes:
      - /opt/linuxforhealth/fhir/config:/opt/fhir/config
      - /opt/linuxforhealth/fhir/certs:/opt/certs

第五步:验证配置是否生效

启动容器后,先查看日志确认没有报错:

docker logs linuxforhealth-fhir

然后用浏览器或curl访问https://你的域名:9443/fhir/metadata,如果能正常返回FHIR元数据,且浏览器显示证书是Let's Encrypt的可信证书,就说明配置成功了。

另外要注意:Let's Encrypt证书90天会过期,你需要设置自动续签,续签后重复第一步的转换命令,再重启FHIR容器即可。可以写个简单的shell脚本配合cron来自动完成这个流程。

备注:内容来源于stack exchange,提问作者Sundaresan-JSE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 13:30:29