我正在尝试遵循本教程https://p11-glue.github.io/p11-glue/p11-kit/manual/remoting.html,但有很多地方让我感到困惑。
- pkcs11 服务器是哪一侧?
它说“在本地客户端上设置 PKCS#11 转发服务器”。所以我明白我的本地机器充当 p11 服务器的角色,直接与智能卡连接(在后面的设置中,我使用 softhsm 作为智能卡)。他们提到了
P11_KIT_SERVER_ADDRESS
,但命令是在“本地客户端”上执行的,这令人困惑。
- 哪一端是 pkcs11 客户端?
在会话“为 PKCS#11 套接字转发准备远程系统”中。“转发 PKCS#11 套接字”,他们找到用户运行时目录,但其中一个是通过“ssh”完成的。所以我认为是
runtime directory
在远程系统上。(他们还使用术语remote server
或remote host
)
如下所述,我描述了我在 2 个容器中执行的步骤,A - 作为我的本地机器,B - 作为远程主机。我使用 softhsm 来模拟智能卡。在本地机器 A 上:
$ p11tool --list-tokens
Token 0:
URL: pkcs11:model=p11-kit-trust;manufacturer=PKCS%2311%20Kit;serial=1;token=System%20Trust
Label: System Trust
Type: Trust module
Flags: uPIN uninitialized
Manufacturer: PKCS#11 Kit
Model: p11-kit-trust
Serial: 1
Module: p11-kit-trust.so
Token 1:
URL: pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=d1472478b9829554;token=mimi
Label: mimi
Type: Generic token
Flags: RNG, Requires login
Manufacturer: SoftHSM project
Model: SoftHSM v2
Serial: d1472478b9829554
Module: /usr/local/lib/softhsm/libsofthsm2.so
因此,机器 A 上有 2 个可用的令牌。我还需要在本地主机上创建运行时目录。否则,当我这样做时会显示错误p11-kit server --provider ...
export XDG_RUNTIME_DIR=/tmp/$(id -u)-today
mkdir -p $XDG_RUNTIME_DIR
chmod 700 $XDG_RUNTIME_DIR
p11-kit server --provider /usr/local/lib/softhsm/libsofthsm2.so "pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=01165599c52ea1fe;token=mimi"
P11_KIT_SERVER_ADDRESS=unix:path=/tmp/0-today/p11-kit/pkcs11-73; export P11_KIT_SERVER_ADDRESS;
P11_KIT_SERVER_PID=74; export P11_KIT_SERVER_PID;
在远程主机-B(172.18.0.3)上:
root@1de661b77dbd:~# export XDG_RUNTIME_DIR=/tmp/$(id -u)-nginx
root@1de661b77dbd:~# mkdir -p $XDG_RUNTIME_DIR && chmod 700 $XDG_RUNTIME_DIR
root@1de661b77dbd:~# systemd-path user-runtime
/tmp/0-nginx
root@1de661b77dbd:~# systemctl enable p11-kit-client.service
Failed to enable unit, unit p11-kit-client.service does not exist.
root@1de661b77dbd:~# systemctl list-unit-files | grep p11
p11-kit-client.service enabled enabled
root@1de661b77dbd:~# mkdir /tmp/0-nginx/p11-kit
我尝试使用 ssh 从 A 连接到机器 B, 但出现警告,因此我需要在 B 上创建,然后警告结束。在/从机器 Assh -R /tmp/0-nginx/p11-kit/pkcs11:${P11_KIT_SERVER_ADDRESS#*=} [email protected]
/tmp/0-nginx/p11-kit
root@b1d0c05c4ec6:~# ssh -R /tmp/0-nginx/p11-kit/pkcs11:${P11_KIT_SERVER_ADDRESS#*=} [email protected]
and then
root@1de661b77dbd:~# ls -l /tmp/0-nginx/p11-kit/pkcs11
srw------- 1 root root 0 Oct 17 10:56 /tmp/0-nginx/p11-kit/pkcs11
p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-client.so --list-tokens
p11tool --provider /usr/local/lib/pkcs11/p11-kit-client.so --list-tokens
=> 远程机器上没有显示任何令牌p11-kit-client.so
。
我是否在任何步骤中犯了错误?为什么使用 p11-kit-client.so 时远程计算机上没有显示任何令牌?