Estou tentando seguir este tutorial https://p11-glue.github.io/p11-glue/p11-kit/manual/remoting.html , mas há muitos pontos que me deixam confuso.
- De que lado está o servidor pkcs11?
Ele disse "Configurando o servidor de encaminhamento PKCS#11 em um cliente local". Então eu entendo que minha máquina local desempenha um papel como servidor p11, onde se conecta diretamente com o smart-card (na configuração posterior eu uso softhsm como um smart card). Eles mencionam o
P11_KIT_SERVER_ADDRESS
, mas o comando é executado no "cliente local", o que é confuso.
- De que lado está o cliente pkcs11?
Na sessão "Preparando o sistema remoto para encaminhamento de socket PKCS#11". "Encaminhando o socket PKCS#11", eles localizam o diretório de tempo de execução do usuário, mas um deles é feito por "ssh". Então eu pensei que
runtime directory
estava no sistema remoto. (Eles também usam o termoremote server
orremote host
)
Conforme abaixo, descrevo o passo a passo que fiz em 2 contêineres, A - como minha máquina local, e B - como um host remoto. Eu uso softhsm para um smart card estimulado. Na máquina local 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
Então, há 2 tokens disponíveis na máquina A. Eu também preciso criar um diretório de tempo de execução no host local. Caso contrário, ele mostra erro quando eu faço issop11-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;
No host remoto - 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
Eu tentei fazer ssh de A para a máquina B, mas recebi o aviso, então precisei criar em B, então o aviso acabou. Na/da máquina 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
=> Nenhum token aparece p11-kit-client.so
na máquina remota.
Cometi um erro em algum dos passos? Por que nenhum token aparece na máquina remota ao usar p11-kit-client.so?