如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
KMRA(密钥管理参考应用)是一款概念验证软件,旨在演示SGX非对称/对称密钥能力与第三方HSM的集成。源代码和文档请访问:[***]
在主机上安装SGX内核驱动。可使用kmaas/ansible/sgx-infra-setup目录中的KMRA ansible脚本安装树外SGX内核驱动。
下载KMRA源代码:[***]
生成mTLS证书和密钥(与容器共享):
bash$ cd /kmra/apphsm/ca $ bash -c "APPHSM_HOSTNAME=apphsm ./gen_all.sh"
注意:APPHSM_HOSTNAME必须与AppHSM容器名称匹配
创建自定义桥接网络:
bash$ docker network create kmra-net
准备证书和配置文件(在主机上)
bash$ cd /kmaas/containers/pccs $ mkdir -p certs && rm -rf certs/* $ cd certs $ bash ../scripts/pccs_generate_certificates.sh
订阅的主密钥将用于后续步骤,可在以下网站随时获取:[***]
设置环境变量并生成配置文件
bash$ export PCCS_ADMIN_PASS="example-admin-pass" $ export PCCS_API_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" $ cd kmra/containers/pccs/config $ ../scripts/pccs_generate_config.sh
说明:PCCS_API_KEY是必填环境变量,其他为可选,未设置将使用默认值。
运行PCCS容器
bash$ cd /kmra/containers/pccs $ docker run --user "65333:65333" --rm --network kmra-net --name pccs -it --cpu-shares 512 --pids-limit 100 --memory=512m --security-opt=no-new-privileges -v `pwd`/certs/private.pem:/opt/intel/pccs/ssl_key/private.pem -v `pwd`/certs/file.crt:/opt/intel/pccs/ssl_key/file.crt -v `pwd`/config/pccs.config:/opt/intel/pccs/config/default.json --read-only --tmpfs /opt/intel/pccs/logs/ --tmpfs /tmp --cap-drop=all pccs
构建参数
USER:容器内用户名(默认:kmra)UID:用户UID(默认:1000)环境变量
PCCS_API_KEY:订阅中的"主密钥"值(来自[***]PCCS_ADMIN_PASS:PCCS管理员密码(演示中未使用,但可提供值)PCCS_USER_PASS:PCCS用户密码(演示中未使用,但可提供值)http_proxy, https_proxy:若在企业代理后使用PCCS需设置(构建镜像时设置)PCCS_PORT:PCCS服务监听端口(默认:8081)PCCS_LOCAL_ONLY:是否仅监听本地网络接口(Y/N,默认:N)基本运行命令
bash$ cd /kmra $ docker run -it --rm --cpu-shares 512 --pids-limit 100 --memory=2048m --security-opt=no-new-privileges --read-only --tmpfs /var/lib/softhsm/tokens --tmpfs /tmp -v `pwd`/containers/apphsm/sgx_default_qcnl.conf:/etc/sgx_default_qcnl.conf:ro -v `pwd`/apphsm/ca/:/opt/intel/ca:ro --name apphsm --env no_proxy="pccs" --cap-drop=all --network kmra-net apphsm:latest
[可选] 自定义配置运行
生成自定义密钥和证书:
bash$ cd containers/apphsm/custom_config $ bash ./gen_key_cert.sh
编辑配置文件:修改"apphsm.conf",添加所需密钥。"token_name"需唯一,"key_name"和"certificate_file"需与"custom_config"目录中的文件对应。
挂载自定义配置目录运行:
bash$ cd kmra/ $ docker run -it --rm --cpu-shares 512 --pids-limit 100 --memory=2048m --security-opt=no-new-privileges --read-only --tmpfs /var/lib/softhsm/tokens --tmpfs /tmp -v `pwd`/containers/apphsm/sgx_default_qcnl.conf:/etc/sgx_default_qcnl.conf:ro -v `pwd`/apphsm/ca/:/opt/intel/ca:ro -v `pwd`/containers/apphsm/custom_config:/opt/apphsm_config:ro --name apphsm --env no_proxy="pccs" --cap-drop=all --network kmra-net apphsm:latest
构建参数
DCAP_VERSION:默认1.15DCAP_LIB_VERSION:默认1.15.100.3SGX_LIB_VERSION:默认2.18.101.1USER:容器内用户名(默认:kmra)UID:用户UID(默认:1000)环境变量
APPHSM_PORT:服务监听端口(默认:5000)no_proxy:不使用代理的主机名/IP列表APPHSM_KEY_IN_TOKEN_NAME:softhsm中的密钥标签(默认:key_1)APPHSM_TOKEN_NAME:softhsm中的令牌标签(默认:token_1)TEST_CTK_LOADKEY_CERT_USER_ID:客户端证书"OU"字段名称(默认:ctk_loadkey_user_id_01234)TEST_UNIQUE_UID:AppHSM中密钥定义的唯一IDDEFAULT_USER_PIN:softhsm用户PIN(4-16字符,默认:1234)DEFAULT_SO_PIN:softhsm安全管理员PIN(4-16字符,默认:***)APPHSM_CUSTOM_CONFIG_DIR:容器内自定义配置目录(默认:/opt/apphsm_config)PCCS配置文件(containers/apphsm/sgx_default_qcnl.conf)
PCCS_URL:PCCS服务URL(默认:[***]USE_SECURE_CERT:是否接受不安全HTTPS证书(FALSE/TRUE,默认:FALSE)运行命令
bash$ cd /kmra $ docker run -it --rm --device /dev/sgx_enclave --cpu-shares 512 --pids-limit 100 --memory=2048m --security-opt=no-new-privileges --device /dev/sgx_provision --cap-drop=all --env PCCS_HOSTNAME=pccs --env APPHSM_HOSTNAME=apphsm --env no_proxy="apphsm,pccs" --name ctk_loadkey --network kmra-net --read-only --tmpfs /opt/intel/cryptoapitoolkit/tokens --tmpfs /tmp -v `pwd`/containers/ctk/sgx_default_qcnl.conf:/etc/sgx_default_qcnl.conf:ro -v `pwd`/containers/nginx/p11_proxy_tls.psk:/etc/p11_proxy_tls.psk:ro -v `pwd`/apphsm/ca/:/opt/intel/ca:ro --user kmra:$(getent group sgx_prv | cut -d: -f3) ctk_loadkey:latest
注意:在部分主机系统(如Ubuntu 22)可能需要添加额外参数:
--group-add $(getent group sgx | cut -d: -f3)。可通过ls -lg /dev/sgx_enclave检查是否需要sgx组。
构建参数
DCAP_VERSION:默认1.15DCAP_LIB_VERSION:默认1.15.100.3SGX_VERSION:默认2.18.1SGX_LIB_VERSION:默认2.18.101.1USER:容器内用户名(默认:kmra)UID:用户UID(默认:1000)环境变量
APPHSM_HOSTNAME:AppHSM服务主机(默认:localhost,通常设为"apphsm")APPHSM_PORT:AppHSM服务端口(默认:5000)NGINX_HOSTNAME:NGINX监听主机(默认:0.0.0.0)NGINX_PORT:NGINX监听端口(默认:8082)no_proxy:不使用代理的主机名/IP列表CLIENT_TOKEN:证书私钥存储的令牌标签(默认:client_token)CLIENT_KEY_LABEL:NGINX使用的密钥标签(默认:client_key_priv)TEST_UNIQUE_UID:AppHSM中密钥定义的唯一IDDEFAULT_USER_PIN:***-Api-Toolkit用户PIN(4-16字符,默认:1234)DEFAULT_SO_PIN:-Api-Toolkit安全管理员PIN(4-16字符,默认:)DEFAULT_CLIENT_TOKEN_ID:密钥对ID(十六进制)KEEP_TOKENS:启动时不清理***-Api-Toolkit令牌运行命令
bash$ cd /kmra $ docker run -it --rm --cpu-shares 512 --pids-limit 100 --memory=2048m --read-only --tmpfs /tmp --env PKCS11_PROXY_SOCKET=tls://<ctk_loadkey容器IP地址>:<端口号> --env no_proxy="ctk_loadkey" -v `pwd`/containers/nginx/p11_proxy_tls.psk:/etc/p11_proxy_tls.psk:ro --name nginx --network kmra-net -p 8082:8082 nginx:latest
环境变量
PKCS11_PROXY_SOCKET:ctk_loadkey容器IP和pkcs11-proxy暴露端口NGINX_HOSTNAME:NGINX监听主机(默认:0.0.0.0)NGINX_PORT:NGINX监听端口(默认:8082)CLIENT_TOKEN:NGINX私钥令牌名称(默认:client_token)CLIENT_KEY_LABEL:NGINX使用的密钥标签(默认:client_key_priv)DEFAULT_USER_PIN:***-Api-Toolkit用户PIN(4-16字符,默认:1234)说明:TLS预共享密钥文件格式为"key_name:16字节十六进制密钥",ctk和nginx容器需使用相同密钥。示例文件见源代码中的p11_proxy_tls.psk。
错误日志:
TASK [create_empty_token_in_hsm : Create token with name 'client_token'] * fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["softhsm2-util", "--module", "/usr/local/lib/libp11sgx.so.0.0.0", "--init-token", "--free", "--label", "client_token", "--pin", "1234", "--so-pin", "12345678"], ... Could not initialize the PKCS#11 library/module: /usr/local/lib/libp11sgx.so.0.0.0
根本原因:SGX服务共享问题(如运行容器时未传递--device /dev/sgx/enclave参数)
错误日志:
TASK [install_ctk_loadkey : Copy ca cert and ctk_loadkey keys to /opt/intel/ctk_loadkey] fatal: [localhost]: FAILED! => {"msg": "an error occurred while trying to read the file '/opt/intel/ca/ctk_loadkey.key': [Errno 13] Permission denied"}
根本原因:容器内用户ID与共享证书/密钥文件的宿主用户ID不匹配,需确保容器内'kmra'用户可访问证书/密钥文件
错误日志:
[error_driver2api sgx_enclave_common.cpp:247] Enclave not authorized to run, e.g. provisioning enclave hosted in app without access rights to /dev/sgx_provision. You need add the user id to group sgx_prv or run the app as root.
根本原因:容器内'sgx_prv'组ID与主机上的组ID不匹配,需确保两者组ID一致
错误日志:
rest_api_perform_request: REST API request failed 'SSL peer certificate or SSH remote key was not OK'!
根本原因:AppHSM证书中的通用名称与ctk_loadkey容器连接AppHSM使用的域名不匹配(如证书为'localhost'但应使用'apphsm')。需重新生成证书并设置正确的APPHSM_HOSTNAME,然后重启apphsm和ctk_loadkey容器。
以下是 intel/nginx 相关的常用 Docker 镜像,适用于 反向代理、负载均衡、静态资源服务 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

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