Подписване на файлове чрез NSS

от Infonotary
Направо към: навигация, търсене

WarningYellow.png Препоръчваният от Инфонотари начин за подписване на файлове е чрез e-Doc Signer. Последната му версия за Windows, macOS и Linux може да се свали от www.infonotary.com.

Това ръководство е за хората, които препочитат да използват команден ред или използват операционна система, за която все още няма версия на e-Doc Signer.

Инсталация на NSS tools

Linux

В зависимост от дистрибуцията, която използвате, изпълнете някоя от следните команди:

  • За Debian и Ubuntu: sudo apt-get install libnss3-tools
  • Fedora: su -c "yum install nss-tools"
  • Opensuse: sudo zypper install mozilla-nss-tools
  • Gentoo: su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss". Понеже в Gentoo всичи помощни програми на NSS са преименувани, ще трябва да пускате всички команди по-долу с префикс nss, например nsscertutil вместо certutil.

macOS

  1. Изтеглете си NSS-3.12.4 от ftp сървъра на Mozilla и го разархивирайте.
  2. Копирайте всички файлове от папката nss-3.12.4/lib в папката nss-3.12.4/bin.
  3. Стартирайте терминал и сменете текущата директория с nss-3.12.4/bin. Ако сте разархивирали NSS в Downloads, това може да стане с командата cd Downloads/nss-3.12.4/bin.

Понеже помощните програми на NSS не са инсталирани в някоя от стандартните папки за програми на macOS, ще трябва да изпълнявате всики команди, показани по-долу със следния префикс - „./“. Например ./certutil вместо certutil.

Може да инсталирате необходимите програми и от MacPorts. Командата за инсталиране е sudo ports install nss. В този случай ще трябва да слагате префикс nss- пред всяка команда.

Начално конфигуриране

Всички стъпки, описани по-долу, се правят еднократно. След като веднъж сте добавили всичката необходима информация в базата данни на NSS, няма нужда да го правите повторно.

Създаване на база данни

В това ръководство се използва споделена база данни на NSS. По същия начин работи и Google Chrome под Linux, така че ако използвате Linux и Chrome, може да пропуснете тази стъпка.

Първо трябва да създадете папката, в която ще се разположи базата данни - mkdir -p $HOME/.pki/nssdb. Тази команда си е от стандартните, така че няма нужда да слагате префикс, в случай че ползвате macOS. След създаването на папката трябва да се създаде и самата база данни със следната команда - certutil -N -d sql:$HOME/.pki/nssdb.

Добавяне на удостоверителната верига на Инфонотари

Следващата стъпка е да добавите удостоверителната верига на Инфонотари към новосъздадената база данни. За целта трябва да си изтеглите следните няколко файла от нашия сайт:

Слеващите четири команди приемат, че сте записали файловете на десктопа. Ако сте ги записали на друго място, променете пътя до тях в последния параметър: Добавяне на базовото удостоверение - certutil -d sql:$HOME/.pki/nssdb -A -t "CT,C,C" -n "InfoNotary CSP Root" -i $HOME/Desktop/in-csp-root.cer

Добавяне на останалите удостоверения от веригата за квалифицирани удостоверения:

  • certutil -d sql:$HOME/.pki/nssdb -A -t ",," -n "i-Notary Q Sign CA" -i $HOME/Desktop/qs-ca.cer
  • certutil -d sql:$HOME/.pki/nssdb -A -t ",," -n "i-Notary Company Q Sign CA" -i $HOME/Desktop/cqs-ca.cer
  • certutil -d sql:$HOME/.pki/nssdb -A -t ",," -n "i-Notary Personal Q Sign CA" -i $HOME/Desktop/pqs-ca.cer

Регистриране на PKCS#11 модула на смарт картата

За да имате достъп до удостоверенията на смарт картата си, ще трябва да регистрирате PKCS#11 модула картата в базата данни. Това става чрез програмата modutil - modutil -dbdir "database" -add "име" -libfile "път до PKCS#11 библиотеката" -mechanisms FRIENDLY

В случай че използвате Linux с OpenSC, командата ще е следната:
modutil -dbdir sql:$HOME/.pki/nssdb -add "OpenSC" -libfile /usr/lib/onepin-opensc-pkcs11.so -mechanisms FRIENDLY

За Bit4id карта на Linux командата е:
modutil -dbdir sql:$HOME/.pki/nssdb -add "Bit4id" -libfile /usr/lib/libbit4ipki.so -mechanisms FRIENDLY

За OpenSC на macOS командата е:
./modutil -dbdir sql:$HOME/.pki/nssdb -add "OpenSC" -libfile /Library/OpenSC/lib/onepin-opensc-pkcs11.so -mechanisms FRIENDLY

За Bit4id карта на macOS командата е:
./modutil -dbdir sql:$HOME/.pki/nssdb -add "Bit4id" -libfile /System/Library/bit4id/cryptoki/libbit4ipki.dylib -mechanisms FRIENDLY


За следващата стъпка ще ни трябва името на смарт картата. Може да го видите със следната команда:
modutil -dbdir sql:$HOME/.pki/nssdb -list

Част от изхода трябва да е подобен на този:

  2. Bit4id
	library name: /System/Library/bit4id/cryptoki/libbit4ipki.dylib
	 slots: 1 slot attached
	status: loaded

	 slot: ACS ACR 38U-CCID 00 00
	token: InfoNotary

В случая Bit4id е името, което съм задал при добавянето на модула, а името на картата е InfoNotary.

Показване на всички удостоверения на картата

За да подпишете файл чрез NSS, трябва да получите името, с което удостоверението от картата е регистрирано в базата данни. За да го видите, трябва да изпълните следната команда - certutil -d sql:$HOME/.pki/nssdb -L -h InfoNotary

В случая InfoNotary е името на картата (token: от предишната команда). Трябва да получите изход, подобен на този:

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

Enter Password or Pin for "InfoNotary":
InfoNotary:213A799A-D4E3-47AF-82B0-D62B1DC746B5             u,u,u

Certificate Nickname ще ни трябва за следващата команда. Ако имате повече от едно удостоверение на картата, ще трябва да ползвате някоя програма, предоставена от производителя или InfoNotary Smart Card Manager, за да видите етикета на удостоверението. NSS по принцип генерира nickname в следния формат „име на карата:етикет на удостоверението“.

Подписване на файл

Командата за подписване е cmsutil -d sql:$HOME/.pki/nssdb -S -T -N InfoNotary:213A799A-D4E3-47AF-82B0-D62B1DC746B5 -i data.txt -o data.txt.p7s

InfoNotary:213A799A-D4E3-47AF-82B0-D62B1DC746B5 е името на удостоверението от предишната команда, data.txt е файлът, който се подписва, а подписът ще бъде записан в data.txt.p7s. В случай че файловете не са в текущата папка, ще трябва да укажете пълния път до тях, Например за подписване на файл на десктопа командата ще е следната:

cmsutil -d sql:$HOME/.pki/nssdb -S -T -N InfoNotary:213A799A-D4E3-47AF-82B0-D62B1DC746B5 -i $HOME/Desktop/data.txt -o $HOME/Desktop/data.txt.p7s

Горните команди генерират подпис в отделен файл, каквито са текущите изисквания на НАП. Ако искате да генерирате подпис, който съдържа и самия файл, трябва от командата за подписване да премахнете параметъра „-T“.


WarningYellow.png На macOS, в случай, че сте направили инсталацията на nss чрез MacPorts, вместо с cmsutil командата за подписване трябва да започва с nss-p7sign.