本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
EJBCA Community Edition(EJBCA CE)是一款开源的公钥基础设施(PKI)和证书颁发机构(CA)软件,是运行时间最长的CA软件项目之一。EJBCA平台独立,可满足从证书注册、证书管理到证书验证的全流程需求。
EJBCA基于Java开发,可在OpenJDK等JVM上运行,支持Linux、Windows等多数平台。EJBCA分为两个版本:
最低系统要求:
EJBCA实例可部署用于以下一种或多种场景,支持从小型到超大型部署:
EJBCA适用于需要建立和管理PKI的各类场景,包括但不限于:
通过Docker命令直接拉取最新EJBCA Community镜像:
sudo docker pull keyfactor/ejbca-ce
启动临时测试实例,允许无认证网络访问管理系统:
docker run -it --rm -p 80:8080 -p 443:8443 -h mycahostname -e TLS_SETUP_ENABLED="simple" keyfactor/ejbca-ce
说明:
--rm:容器停止后自动删除-p 80:8080:映射HTTP端口(8080容器内→80主机)-p 443:8443:映射TLS端口(8443容器内→443主机)-h mycahostname:设置容器主机名TLS_SETUP_ENABLED="simple":生成管理CA和服务器TLS证书,但允许任何人通过HTTPS管理系统(仅用于测试,生产环境禁用)容器完全启动后,访问 [***] 进入管理界面。
启动需要客户端证书认证的实例:
docker run -it --rm -p 80:8080 -p 443:8443 -h mycahostname -e TLS_SETUP_ENABLED="true" keyfactor/ejbca-ce
说明:
TLS_SETUP_ENABLED="true":首次启动时生成管理CA,为服务器和初始管理员生成客户端TLS证书[***],通过客户端证书认证容器行为可通过环境变量自定义,以下为关键配置:
生产环境必须自定义以下安全相关密码:
| 环境变量 | 描述 |
|---|---|
PASSWORD_ENCRYPTION_KEY | 用于加密EJBCA中的密码(如终端实体明文密码、加密令牌密码等),首次安装前设置,不可更改 |
CA_KEYSTOREPASS | 保护数据库中软件加密令牌(非HSM)的默认密码,建议为加密令牌手动设置密码 |
EJBCA_CLI_DEFAULTPASSWORD | 本地命令行界面(CLI)的默认用户('ejbca')密码 |
设置示例:
docker run -it --rm -p 80:8080 -p 443:8443 -h mycahostname \ -e PASSWORD_ENCRYPTION_KEY="myrandomkey" \ -e CA_KEYSTOREPASS="anotherrandomkey" \ -e EJBCA_CLI_DEFAULTPASSWORD="randompassphrase" \ keyfactor/ejbca-ce
通过 docker inspect keyfactor/ejbca-ce:latest 可查看所有环境变量及默认值,常用变量包括:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
LOG_LEVEL_APP | 应用日志级别 | INFO |
TLS_SETUP_ENABLED | TLS配置模式:true(生成CA和证书)、simple(无认证访问)、later(代理TLS)、false(禁用TLS) | true(首次启动) |
DATABASE_JDBC_URL | 数据库JDBC连接URL | jdbc:h2:/mnt/persistent/ejbcadb;DB_CLOSE_DELAY=-1 |
DATABASE_USER | 数据库用户名(外部数据库时必填) | - |
DATABASE_PASSWORD | 数据库密码(外部数据库时必填) | - |
EJBCA支持外部数据库实现集群部署,默认使用内置H2数据库(仅适合测试),生产环境建议使用MariaDB/MySQL或PostgreSQL。
| 数据库类型 | JDBC URL示例 |
|---|---|
| H2(持久化) | jdbc:h2:/mnt/persistent/ejbcadb;DB_CLOSE_DELAY=-1 |
| H2(内存,非持久化) | jdbc:h2:mem:ejbcadb;DB_CLOSE_DELAY=-1 |
| MariaDB/MySQL | jdbc:mariadb://database:3306/ejbca?characterEncoding=UTF-8 |
| PostgreSQL | jdbc:postgresql://database/ejbca |
docker run -it --rm -p 80:8080 -p 443:8443 -h mycahostname \ -e TLS_SETUP_ENABLED="true" \ -e DATABASE_JDBC_URL="jdbc:mariadb://172.26.0.1:3306/ejbcatest?characterEncoding=UTF-8" \ -e DATABASE_USER="ejbca" \ -e DATABASE_PASSWORD="password" \ keyfactor/ejbca-ce
注意:首次启动时会自动创建数据库表结构,后续启动将复用现有数据。
适用于在反向代理(如Nginx、Apache Httpd)后部署,需禁用容器内部TLS配置,通过代理处理TLS。
| 环境变量 | 描述 |
|---|---|
PROXY_AJP_BIND | AJP代理端口(8009)绑定的IP地址 |
PROXY_HTTP_BIND | HTTP后端端口(8081和8082)绑定的IP地址,8082接受SSL_CLIENT_CERT头 |
TLS_SETUP_ENABLED | 需设置为later(代理TLS)或false(禁用TLS),不可与true同时使用 |
说明:配置代理后会禁用管理CA创建,需手动配置EJBCA。
EJBCA通过JavaMail服务发送邮件通知,可通过环境变量配置SMTP参数:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
SMTP_DESTINATION | SMTP服务器地址 | localhost |
SMTP_DESTINATION_PORT | SMTP端口 | 25 |
SMTP_TLS_ENABLED | 启用TLS | true |
SMTP_SSL_ENABLED | 启用SSL | true |
SMTP_USERNAME | SMTP认证用户名 | - |
SMTP_PASSWORD | SMTP认证密码 | - |
SMTP_FROM | 发件人邮箱 | - |
Gmail SMTP示例:
docker run -it --rm -p 80:8080 -p 443:8443 -h mycahostname \ -e TLS_SETUP_ENABLED="simple" \ -e SMTP_DESTINATION="smtp.gmail.com" \ -e SMTP_DESTINATION_PORT="587" \ -e SMTP_USERNAME="***" \ -e SMTP_PASSWORD="userssecretpassword" \ -e SMTP_FROM="***" \ -e SMTP_SSL_ENABLED="false" \ keyfactor/ejbca-ce
以下目录用于持久化数据、配置和密钥,生产环境建议通过Docker卷挂载:
| 目录路径 | 用途 |
|---|---|
/mnt/persistent | H2数据库持久化目录(默认),需通过卷挂载以保留数据 |
/mnt/external/secrets/tls/cas | DER编码的CA证书目录,文件名作为CA名称(如ManagementCA.crt) |
/mnt/external/secrets/tls/ks | 服务器密钥库目录,需包含server.jks、server.storepasswd等文件 |
/mnt/external/secrets/tls/ts | 信任库目录,需包含truststore.jks、truststore.storepasswd文件 |
/opt/keyfactor/ejbca/conf | 应用配置文件目录,可覆盖配置属性 |
/opt/keyfactor/bin | 启动脚本和CLI命令(如ejbca.sh、ejbcaClientToolBox.sh) |
# 创建卷 docker volume create ejbca-persistent-data # 启动容器,挂载卷 docker run -it --rm -p 80:8080 -p 443:8443 -h mycahostname \ -v ejbca-persistent-data:/mnt/persistent \ keyfactor/ejbca-ce
# 映射主机9443端口到容器8443端口 docker run -it --rm -p 80:8080 -p 9443:8443 -h mycahostname keyfactor/ejbca-ce
修复静态链接端口:
创建web.properties文件,设置httpserver.external.privhttps=9443,挂载到容器:
docker run -it --rm -p 80:8080 -p 9443:8443 -h mycahostname \ -v $PWD/config/web.properties:/opt/primekey/ejbca/conf/web.properties \ keyfactor/ejbca-ce
# 创建插件目录并放入JAR文件 mkdir -p ejbca-plugins && cp my-plugin.jar ejbca-plugins/ # 启动容器,挂载插件目录 docker run -it --rm -p 80:8080 -p 443:8443 -h mycahostname \ -v $PWD/ejbca-plugins:/opt/primekey/ejbca/plugins \ keyfactor/ejbca-ce
EJBCA Enterprise版本提供商业支持,详情见EJBCA Enterprise。
EJBCA Community版基于LGPL许可证开源。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429