
czertainly/czertainly-core本仓库是开源项目CZERTAINLY的一部分。有关该项目的更多信息,请访问CZERTAINLY仓库,包括贡献指南。
Core为CZERTAINLY平台提供基础功能,实现证书生命周期管理逻辑并处理所有相关任务,可视为平台的"大脑"。
Core负责两种类型的通信:
Connector提供特定技术的功能证书和加密密钥的管理通过CZERTAINLY的Profiles对象抽象实现,包括:
RA Profile - 证书生命周期管理服务配置Token Profile - 加密服务配置和密钥管理Compliance Profile - 证书及相关对象的合规要求更多信息请参考CZERTAINLY文档。
Core访问控制运行需满足以下要求:
AUTH_SERVICE_BASE_URL环境变量配置Auth服务URL。OPA_BASE_URL环境变量配置OPA服务URL。警告
当Auth或OPA缺失时,Core将无法运行。
注意
OPA可与Core运行在同一系统或外部托管。为提高权限评估性能,通常与Core运行在同一主机(如作为sidecar)。
证书库存包含平台中发现或导入的所有Certificates。每个Certificate提供可管理的全面一致信息。
每个Certificate支持以下基本生命周期操作:
操作可由Core自动执行,也可由用户手动执行。
密钥库存包含所有可用的Keys。每个Key提供通过Token Profile管理的全面一致信息。
Core支持以下PQC算法:FALCON、CRYSTALS-Dilithium、SPHINCS+。该支持为实验性,不建议用于生产环境,因为PQC算法仍在开发中且未完全标准化。
Core支持以下证书管理协议:
Core以Docker容器形式提供。使用czertainly/czertainly-core:tagname从仓库拉取所需镜像。可通过以下环境变量进行配置:
| 变量 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|
JDBC_URL | 数据库访问的JDBC URL | 是 | N/A |
JDBC_USERNAME | 数据库访问用户名 | 是 | N/A |
JDBC_PASSWORD | 数据库访问密码 | 是 | N/A |
DB_SCHEMA | 使用的数据库模式 | 否 | core |
PORT | 服务暴露端口 | 否 | 8080 |
HEADER_NAME | 客户端证书所在的请求头名称 | 否 | ssl-client-cert |
HEADER_ENABLED | 是否从请求头获取证书 | 是 | N/A |
TS_PASSWORD | 可信证书存储密码 | 是 | N/A |
OPA_BASE_URL | Open Policy Agent基础URL | 是 | N/A |
AUTH_SERVICE_BASE_URL | 认证服务基础URL | 是 | N/A |
AUTH_TOKEN_HEADER_NAME | JSON ID内容的请求头名称 | 否 | X-USERINFO |
SCHEDULED_TASKS_ENABLED | 是否启用证书状态定期更新 | 否 | true |
JAVA_OPTS | 运行应用的自定义Java系统属性 | 否 | N/A |
TRUSTED_CERTIFICATES | PEM编码的额外可信证书列表 | 否 | N/A |
SCHEDULER_BASE_URL | 调度器服务基础URL | 是 | N/A |
RABBITMQ_HOST | RabbitMQ消息主机 | 是 | N/A |
RABBITMQ_PORT | RabbitMQ消息端口 | 否 | 5672 |
RABBITMQ_USERNAME | RabbitMQ消息用户名 | 是 | N/A |
RABBITMQ_PASSWORD | RabbitMQ消息密码 | 是 | N/A |
RABBITMQ_VHOST | RabbitMQ消息虚拟主机 | 否 | czertainly |
SETTINGS_CACHE_REFRESH_INTERVAL | 从数据库刷新设置缓存的定期间隔(秒) | 否 | 30 |
Core支持OpenTelemetry以生成信号(指标、追踪、日志)到可观测性系统。可通过以下环境变量配置OpenTelemetry:
| 变量 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|
OTEL_SDK_DISABLED | 禁用OpenTelemetry SDK。支持值:true、false。默认禁用 | 否 | true |
OTEL_LOGS_EXPORTER | 日志导出器。支持值:none、otlp、logging | 否 | none |
OTEL_METRICS_EXPORTER | 指标导出器。支持值:none、otlp、logging | 否 | none |
OTEL_TRACES_EXPORTER | 追踪导出器。支持值:none、otlp、logging | 否 | none |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | 日志数据端点URL(可选端口)。使用OTLP/HTTP时通常以v1/logs结尾 | 否 | http://localhost:4317 |
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | 日志导出器协议。支持值:grpc、http/protobuf、http/json | 否 | grpc |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | 指标数据端点URL(可选端口)。使用OTLP/HTTP时通常以v1/metrics结尾 | 否 | http://localhost:4317 |
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL | 指标导出器协议。支持值:grpc、http/protobuf、http/json | 否 | grpc |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | 追踪数据端点URL(可选端口)。使用OTLP/HTTP时通常以v1/traces结尾 | 否 | http://localhost:4317 |
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL | 追踪导出器协议。支持值:grpc、http/protobuf、http/json | 否 | grpc |
如需Core与外部系统通信,可能需要配置代理。通过以下环境变量为Docker容器启用代理:
| 变量 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|
HTTP_PROXY | HTTP连接代理URL。格式:<protocol>://<proxy_host>:<proxy_port> 或 <protocol>://<user>:<password>@<proxy_host>:<proxy_port> | 否 | N/A |
HTTPS_PROXY | HTTPS连接代理URL。格式:<protocol>://<proxy_host>:<proxy_port> 或 <protocol>://<user>:<password>@<proxy_host>:<proxy_port> | 否 | N/A |
NO_PROXY | 不通过代理的主机名逗号分隔列表 | 否 | N/A |
示例值:
HTTP_PROXY=[***]HTTPS_PROXY=[***]NO_PROXY=localhost,127.0.0.1,0.0.0.0,10.0.0.0/8,cattle-system.svc,.svc,.cluster.local,my-domain.localbashdocker run -d \ --name czertainly-core \ -p 8080:8080 \ -e JDBC_URL=jdbc:postgresql://postgres:5432/czertainly \ -e JDBC_USERNAME=czertainly \ -e JDBC_PASSWORD=securepassword \ -e AUTH_SERVICE_BASE_URL=[***] \ -e OPA_BASE_URL=[***] \ -e TS_PASSWORD=truststorepassword \ -e SCHEDULER_BASE_URL=[***] \ -e RABBITMQ_HOST=rabbitmq \ -e RABBITMQ_USERNAME=rabbituser \ -e RABBITMQ_PASSWORD=rabbitpass \ -e HEADER_ENABLED=true \ czertainly/czertainly-core:latest
yamlversion: '3.8' services: core: image: czertainly/czertainly-core:latest container_name: czertainly-core ports: - "8080:8080" environment: - JDBC_URL=jdbc:postgresql://postgres:5432/czertainly - JDBC_USERNAME=czertainly - JDBC_PASSWORD=securepassword - AUTH_SERVICE_BASE_URL=[***] - OPA_BASE_URL=[***] - TS_PASSWORD=truststorepassword - SCHEDULER_BASE_URL=[***] - RABBITMQ_HOST=rabbitmq - RABBITMQ_PORT=5672 - RABBITMQ_USERNAME=rabbituser - RABBITMQ_PASSWORD=rabbitpass - RABBITMQ_VHOST=czertainly - HEADER_ENABLED=true - SCHEDULED_TASKS_ENABLED=true depends_on: - postgres - rabbitmq - auth - opa - scheduler




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务