如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
EJBCA Community Edition(EJBCA CE)是一款开源的公钥基础设施(PKI)和证书颁发机构(CA)软件,是运行时间最长的CA软件项目之一。EJBCA平台独立,可满足从证书注册、证书管理到证书验证的全流程需求。
EJBCA基于Java开发,可在OpenJDK等JVM上运行,支持Linux、Windows等多数平台。EJBCA分为两个版本:
最低系统要求:
EJBCA实例可部署用于以下一种或多种场景,支持从小型到超大型部署:
证书颁发机构(CA)
验证机构(VA)
注册机构(RA)
EJBCA适用于需要建立和管理PKI的各类场景,包括但不限于:
通过Docker命令直接拉取最新EJBCA Community镜像:
bashsudo docker pull keyfactor/ejbca-ce
临时测试实例(无认证访问)
启动临时测试实例,允许无认证网络访问管理系统:
bashdocker 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管理系统(仅用于测试,生产环境禁用)容器完全启动后,访问 https://mycahostname:443/ejbca/adminweb/ 进入管理界面。
经典工作流(客户端证书认证访问)
启动需要客户端证书认证的实例:
bashdocker 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证书https://mycahostname:443/ejbca/adminweb/,通过客户端证书认证容器行为可通过环境变量自定义,以下为关键配置:
安全参数
生产环境必须自定义以下安全相关密码:
| 环境变量 | 描述 |
|---|---|
PASSWORD_ENCRYPTION_KEY | 用于加密EJBCA中的密码(如终端实体明文密码、加密令牌密码等),首次安装前设置,不可更改 |
CA_KEYSTOREPASS | 保护数据库中软件加密令牌(非HSM)的默认密码,建议为加密令牌手动设置密码 |
EJBCA_CLI_DEFAULTPASSWORD | 本地命令行界面(CLI)的默认用户('ejbca')密码 |
设置示例:
bashdocker 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。
数据库连接URL格式
| 数据库类型 | 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 |
使用外部数据库示例(MariaDB)
bashdocker 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示例:
bashdocker 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="user@gmail.com" \ -e SMTP_PASSWORD="userssecretpassword" \ -e SMTP_FROM="user@gmail.com" \ -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) |
bash# 创建卷 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
bash# 映射主机9443端口到容器8443端口 docker run -it --rm -p 80:8080 -p 9443:8443 -h mycahostname keyfactor/ejbca-ce
修复静态链接端口:
创建web.properties文件,设置httpserver.external.privhttps=9443,挂载到容器:
bashdocker 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
bash# 创建插件目录并放入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许可证开源。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


来自真实用户的反馈,见证轩辕镜像的优质服务