openssl pkcs11 engine
От версия 0.9.7 на openssl се поддържат външни хардуеърни криптографски устройства в базовия пакет. Преди това версия 0.9.6 чрез специален рилийз 0.9.6-engine, също поддържа въпросните устройства. Тука идва интересния момент, може ли със openssl да се поддържа pkcs11 библиотека за достъп до хардуеърни устройства, като смарт карти примерно.
И така... не че съм пробвал (имам още доста неща да изчистя около Федора и старите версии на пакетите pcsc-lite и ccid от extras), но ще сложа един малък guide, изкопан от маил листата на OpenSC.
За целта трябва да имате инсталирани pcsc-lite, opensc, openct и (как иначе) openssl.
Ако имате USB smart card reader - ок. Обаче ако имате такъв на сериен порт ще се наложи да попишете малко в /etc/reader.conf.d/readers.conf
Когато всичко е готово можем да пристъпим към... същественото
1. инициализиране на картата с pkcs15-init -EC
2. създаване на нова PIN/PUK двойка на картата с pkcs15-init -P
3. създаване на нова ключова двойка на картата с pkcs15-init -G
4. експорт на публичния ключ във файл с pkcs15-tool --read-public-key 45 -o mykey.pem
5. (тука става интересно) проверка дали openssl поддържа pkcs11 engine с openssl -engine
6. проверка дали е налична pkcs11 библиотека с openssl -engine -t pkcs11
7. ако не тогава се оказва път до библиотеката: openssl -engine -t -pre SO_PATH:/path_to/opensc-pkcs11.so pkcs11
8. създаване на сертификат: openssl req -engine pkcs11 -pre SO_PATH:/path_to/opensc-pkcs11.so -new -key 45 -out mycert.csr
Опаааа и тука има един малък проблем. Така описано не работи с -pre опция, но от друга страна openssl не открива pkcs11 библиотеката без -pre опцията ??? Яко а.
За повече информация относно openssl и сертификати цък на линка. Opensll pkcs11 trustway patch и накрая OpenSC да ви стане ясно и за pkcs11 библиотеката от opensc проекта.
Когато имам време, ще разгледам обстойно какво е положението и ще пиша с подробности.