Pillanatnyi állapot összefoglalása:
* Titkos kulcsot nem importál pem/der-fájlból, például azért, mert a titkos kulcs nem valid certificate (ezt az logikát én sem értem).
* Viszont pkcs12-ből tud importálni cert-et és titkos kulcsot is.
* Nem akármilyen pkcs12-ből. A legújabb gpgsm [2.2.27 nem megy, 2.4.3 megy, mást még nem néztem] elboldogul az OpenSSL3 által -legacy opcióval létrehozott pkcs12 fájllal. (Az olyan, mint az OpenSSL1 által létrehozott pkcs12.)
* Az importálás olyan misztikusan bonyolult művelet, hogy nem önállóan végzi, hanem az agent bevonásával. Az agent nem szereti, ha töröljük alóla a ~/.gnupgp könyvtárat, tehát ha tiszta lappal szeretnénk kezdeni az egyes teszt-futásokat, akkor így próbálkozzunk:
killall gpg-agent
rm -rf ~/.gnupg
mkdir -p ~/.gnupg
gpgsm --pinentry-mode loopback --passphrase-fd 0 --import proba.p12 <proba.pwd
gpgsm: total number processed: 2
gpgsm: unchanged: 1
gpgsm: secret keys read: 1
gpgsm: secret keys imported: 1
gpgsm -K
[keyboxd]
...
* A kulcs a ~/.gnupg/private-keys-v1.d könyvtárba kerül, a cert pedig sehová (akár volt chain a p12-ben, akár nem). Ami kicsit nyugtalanító, mert szerintem egy ~/gnupg/pubring.kbx nevű fájlba kellett volna kerüljön.
* Mivel kitaláltak egy újabb démont, a keyboxd-t (Váncsa István mondása jut eszembe: némely emberi agy egészen másképp működik, mint ahogy azt hétköznapi észjárással elképzelnénk.) Szóval a következő ötlet:
killall gpg-agent
rm -rf ~/.gnupg
echo '#use-keyboxd' >~/.gnupg/common.conf
gpgsm --pinentry-mode loopback --passphrase-fd 0 --import proba.p12 <proba.pwd
$ ls -l ~/.gnupg/
total 20
drwx------ 2 user group 4096 Jan 16 06:38 crls.d
drwx------ 2 user group 4096 Jan 16 06:38 private-keys-v1.d
-rw-r--r-- 1 user group 4477 Jan 16 06:38 pubring.kbx
-rw-r--r-- 1 user group 3308 Jan 16 06:38 pubring.kbx~
* További jó ötletnek tűnik, hogy a pkcs12-vel való bénázást elkerülendő simán átmásoljuk a ~/.gnupg tartalmát az etalon-gépről a production gépre (vagy pl. konténerbe), ha a gpg-verziókülönbség nem túl nagy a kettő között.