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

如何通过DoD CAC访问受双因素认证保护的私有Docker仓库?

解决Docker Pull与DoD CAC读卡器交互的问题

我之前处理过类似的DoD CAC认证对接私有Docker仓库的场景,Docker CLI本身确实没有原生支持直接和智能卡硬件交互,但我们可以通过导出CAC中的用户证书/私钥,再让Docker使用这些证书来完成认证,具体步骤如下:

1. 从CAC读卡器导出证书与私钥

首先需要借助OpenSC工具(Linux/macOS)或者Windows自带的证书管理器来提取CAC中的证书和对应的私钥:

Linux/macOS操作:

  • 安装OpenSC工具包:sudo apt install opensc(Debian/Ubuntu)或brew install opensc(macOS)
  • 列出CAC读卡器中的证书:
    pkcs11-tool --list-slots
    
  • 导出用户证书为PEM格式:
    pkcs15-tool --read-certificate 0 > user-cert.pem
    
  • 导出私钥(注意:部分DoD CAC可能需要PIN验证):
    pkcs15-tool --read-key 0 --pin <your-cac-pin> > user-key.pem
    

Windows操作:

  • 插入CAC读卡器,打开「证书管理器」(certmgr.msc)
  • 在「个人」→「证书」中找到DoD颁发的用户证书,右键选择「所有任务」→「导出」
  • 选择导出私钥(勾选「包括证书路径中的所有证书」),保存为PFX格式
  • 用OpenSSL将PFX转换为PEM格式:
    openssl pkcs12 -in your-cert.pfx -out user-cert.pem -clcerts -nokeys
    openssl pkcs12 -in your-cert.pfx -out user-key.pem -nocerts -nodes
    

2. 配置Docker使用导出的证书

Docker会自动读取对应仓库域名下的证书文件,需要创建对应目录并放置证书:

  • 创建证书目录(替换为你的仓库地址和端口):
    mkdir -p ~/.docker/certs.d/your-nexus-registry.com:8443
    
  • 将导出的user-cert.pem、user-key.pem以及DoD根CA证书(如果反向代理需要)复制到该目录:
    cp user-cert.pem ~/.docker/certs.d/your-nexus-registry.com:8443/client.cert
    cp user-key.pem ~/.docker/certs.d/your-nexus-registry.com:8443/client.key
    # 如果需要CA证书,复制为ca.crt
    cp dod-root-ca.pem ~/.docker/certs.d/your-nexus-registry.com:8443/ca.crt
    

3. 测试Docker Pull命令

现在可以直接执行docker pull命令,Docker会自动使用目录中的证书完成与反向代理的双向TLS认证:

docker pull your-nexus-registry.com:8443/your-image:tag

进阶:自动证书刷新(可选)

由于CAC证书有有效期,你可以编写一个简单的Shell脚本,定期从读卡器重新导出证书并更新Docker证书目录,避免手动操作。比如:

#!/bin/bash
REGISTRY_DIR=~/.docker/certs.d/your-nexus-registry.com:8443
pkcs15-tool --read-certificate 0 > $REGISTRY_DIR/client.cert
pkcs15-tool --read-key 0 --pin <your-cac-pin> > $REGISTRY_DIR/client.key

可以用cron(Linux)或任务计划(Windows)定期执行这个脚本。

注意:导出私钥时要确保本地环境的安全性,避免私钥泄露。如果你的组织不允许导出私钥,也可以考虑使用pkcs11-proxy之类的工具,让Docker通过PKCS#11接口直接访问CAC,但这种方式需要修改Docker的启动参数,配置起来相对复杂。

内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:02:46