通用访问卡
本页面解释了如何设置 Arch 以使用美国国防部的通用访问卡 (CAC)。
安装
配置
如果您的读卡器没有密码键盘,追加 enable_pinpad = false
到 /etc/opensc.conf
。
有时 opensc 可能难以识别 CAC 的正确驱动程序,而是可能选择 PIV 或其他驱动程序。 您可以通过编辑 /etc/opensc.conf
来强制使用 CAC 驱动程序,将 card_drivers = cac
和 force_card_driver = cac
添加到配置文件中
启用 pcscd
启动 并启用 pcscd.socket
。
配置浏览器
- 前往: https://public.cyber.mil/pki-pke/pkipke-document-library/
- 下载证书: "PKI CA Certificate Bundles: PKCS#7 For DoD PKI Only - Version 5.13" (ZIP 下载)
- 解压 DoD PKI zip 文件
- 按照特定于浏览器的说明进行操作
Firefox
加载安全设备
导航至 编辑 > 首选项 > 高级 > 证书 > 安全设备,然后单击“加载”以使用 /usr/lib/opensc-pkcs11.so
或 /usr/lib/pkcs11/opensc-pkcs11.so
加载模块。
导入 DoD 证书
按照此顺序安装上述 zip 文件中的证书,方法是转到编辑 > 首选项 > 高级 > 证书 > 查看证书 > 授权机构 > 导入(确保至少选中“信任此 CA 以识别网站”的框)
- Certificates_PKCS7_v5_13_DoD_der.p7b
- Certificates_PKCS7_v5_13_DoD_DoD_Root_CA_3_der.p7b
- Certificates_PKCS7_v5_13_DoD_DoD_Root_CA_4_der.p7b
- Certificates_PKCS7_v5_13_DoD_DoD_Root_CA_5_der.p7b
- Certificates_PKCS7_v5_13_DoD_DoD_Root_CA_6_der.p7b
- DOD_PKE_Chain.pem
Chromium/Google Chrome
1. 将 CAC 模块添加到 NSS DB。
确保您的 CAC 已连接,Chromium 已关闭,并在终端中输入以下内容: $ modutil -dbdir sql:$HOME/.pki/nssdb/ -add "CAC Module" -libfile /usr/lib/opensc-pkcs11.so
成功后,您将看到“Module "CAC Module" added to database.”
2. 使用 $ modutil -dbdir sql:$HOME/.pki/nssdb/ -list
检查 CAC 模块是否已成功添加
3. (在 shell 中)导航到解压后的 DoD PKI 文件位置,并通过以下方式安装
for n in $(ls * | grep Chrome); do certutil -d sql:$HOME/.pki/nssdb -A -t TC -n $n -i $n; done
或
重新打开 Chrome,导航到 设置 > 显示高级设置 > 管理证书 > 授权机构 以从上面的 PEM 格式文件加载 CA 捆绑包。
4. 验证授权机构是否在 Chrome 的 设置 > 显示高级设置 > 管理证书 > 授权机构 下,然后展开 “org-U.S. Government”,您应该看到列出了许多 “DoD” 证书。
VMware/Omnissa Horizon Client
请注意,Omnissa 已从 VMware 收购了 horizon-view 解决方案。
Omnissa
安装 omnissa-horizon-clientAUR 和 omnissa-horizon-usbAUR。 要将 CAC 身份验证与 VMware Horizon Client 集成,请创建目录 /usr/lib/omnissa/horizon/pkcs11
并链接 pkcs11 库
# ln -s /usr/lib/pkcs11/opensc-pkcs11.so /usr/lib/omnissa/horizon/pkcs11/libopenscpkcs11.so
还要创建以下符号链接以启用 ssl_3.4.0。
# ln -sf /usr/lib/libcrypto.so.3 /usr/lib/omnissa/libcrypto.so.3 # ln -sf /usr/lib/libssl.so.3 /usr/lib/omnissa/libssl.so.3
VMware
安装 vmware-horizon-clientAUR、vmware-horizon-usbAUR 和 vmware-horizon-smartcardAUR。 启动 并 启用 vmware-horizon-usb.service
。
要将 CAC 身份验证与 VMware Horizon Client 集成,请创建目录 /usr/lib/vmware/view/pkcs11
并链接 pkcs11 库
# ln -s /usr/lib/pkcs11/opensc-pkcs11.so /usr/lib/vmware/view/pkcs11/libopenscpkcs11.so
还要创建以下符号链接以启用 ssl_3.4.0
# ln -sf /usr/lib/libcrypto.so.3 /usr/lib/vmware/libcrypto.so.3 # ln -sf /usr/lib/libssl.so.3 /usr/lib/vmware/libssl.so.3
测试
访问您常用的 CAC 安全网页,系统应会要求您输入证书的主密码。 输入密码,如果您可以进入,则表示它正在工作。
如果某些站点/页面似乎无法正常工作(例如,outlook web access 将不会为 DoD webmail 验证会话),请尝试使用隐私/隐身会话来测试证书链的有效性并删除一些变量。
如果您想手动查询启用 PIN 的 CAC/智能卡上的证书,请使用以下命令
$ p11tool --login --provider=/usr/lib/pkcs11/opensc-pkcs11.so --list-all-certs -d 100
调试
opensc-tool
此信息的大部分内容来自 Firas Kraïem 的博客文章
验证 opensc 可以看到您的读卡器
$ opensc-tool --list-readers
# Detected readers (pcsc) Nr. Card Features Name 0 Yes Generic USB2.0-CRW [Smart Card Reader Interface] (20070818000000000) 00 00
列出已插入的卡
$ opensc-tool --reader 0 --name
Personal Identity Verification Card
列出已插入的卡和正在使用的驱动器
$ opensc-tool --reader 0 --name -v
Connecting to card in reader Generic USB2.0-CRW [Smart Card Reader Interface] (20070818000000000) 00 00... Using card driver Personal Identity Verification Card. Card name: Personal Identity Verification Card
pcsc-tools
另一个选择是 pcsc-tools。 程序 pcsc_scan
可能会有所帮助
$ pcsc_scan
PC/SC device scanner V 1.4.21 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr> Compiled with PC/SC lite version: 1.8.6 Using reader plug'n play mechanism Scanning present readers... 0: Dell Dell Smart Card Reader Keyboard 00 00 Thu Sep 5 10:41:53 2013 Reader 0: Dell Dell Smart Card Reader Keyboard 00 00 Card state: Card removed, Thu Sep 5 10:41:58 2013 Reader 0: Dell Dell Smart Card Reader Keyboard 00 00 Card state: Card inserted, ATR: 3B DB 96 00 80 1F 03 00 31 C0 64 B0 F3 10 00 07 90 00 80 ATR: 3B DB 96 00 80 1F 03 00 31 C0 64 B0 F3 10 00 07 90 00 80 + TS = 3B --> Direct Convention + T0 = DB, Y(1): 1101, K: 11 (historical bytes) TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU 250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s TC(1) = 00 --> Extra guard time: 0 TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 ----- TD(2) = 1F --> Y(i+1) = 0001, Protocol T = 15 - Global interface bytes following ----- TA(3) = 03 --> Clock stop: not supported - Class accepted by the card: (3G) A 5V B 3V + Historical bytes: 00 31 C0 64 B0 F3 10 00 07 90 00 Category indicator byte: 00 (compact TLV data object) Tag: 3, len: 1 (card service data byte) Card service data byte: C0 - Application selection: by full DF name - Application selection: by partial DF name - EF.DIR and EF.ATR access services: by GET RECORD(s) command - Card with MF Tag: 6, len: 4 (pre-issuing data) Data: B0 F3 10 00 Mandatory status indicator (3 last bytes) LCS (life card cycle): 07 (Operational state (activated)) SW: 9000 (Normal processing.) + TCK = 80 (correct checksum) Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3B DB 96 00 80 1F 03 00 31 C0 64 B0 F3 10 00 07 90 00 80 DoD CAC, Oberthur ID One 128 v5.5 Dual
参见
- PIV Usage Guides[死链 2023-09-16 ⓘ]