KMail
KMail и gnupg
Необходимые пакеты:
- kdepim
- gnupg2-2.0.x
Для использования gpg-агента в KDE надо создать файл "~/.kde/env/gpg-agent.sh":
#!/bin/sh eval "$(gpg-agent --daemon)"
а также "~/.kde/shutdown/gpg-agent.sh":
#!/bin/sh # the second field of the GPG_AGENT_INFO variable is the # process ID of the gpg-agent active in the current session # so we'll just kill that, rather than all of them :) [[ -n ${GPG_AGENT_INFO} ]] && kill `echo ${GPG_AGENT_INFO} | cut -d ':' -f 2`
Настройка KMail для работы с S/MIME.
Для работы почтового клиента KMail с SSL-сертификатами необходимо, чтобы были установлены следующие программы:
- openssl
- libassuan
- libgpg-error
- libgcrypt
- libksba
- pinentry
- gnupg2
- gpgsm
- gpgme
- cryptplugin
Импорт ключей
Выбрать ключи с p12-файла (keycert.p12):
$ openssl pkcs12 -in keycert.p12 -out certs.pem -nodes
Выбрать ключ из p12-файла:
$ openssl pkcs12 -in certs.pem -export -out certkey.p12 -nocerts -nodes
Затем импортировать pem-ключ в public-keyring:
$ gpgsm --call-protect-tool --p12-import --store certkey.p12
Добавить доверительный oтпечаток (fingerprint) в файл ~/.gnupg/trustlist.txt. Для этого просмотреть все установленные ключи:
$ gpgsm -kv
Вывод на экране будет приблизительно таким:
ID: 0xFFFFFFFFF23B35FF S/N: 00 Issuer: /CN=Free SSL Certification Authority/OU=CA Authority Dep./O=StartCom Ltd./L=Eilat/ST=Israel/C=IL/EMail=admin@startcom.org aka: admin@startcom.org Subject: /CN=Free SSL Certification Authority/OU=CA Authority Dep./O=StartCom Ltd./L=Eilat/ST=Israel/C=IL/EMail=admin@startcom.org aka: admin@startcom.org validity: 2005-03-17 17:37:48 through 2035-03-10 17:37:48 key type: 1024 bit RSA key usage: digitalSignature nonRepudiation keyEncipherment certSign crlSign chain length: unlimited fingerprint: 95:E6:AD:F8:D7:71:46:02:4D:D5:6A:21:B2:E7:3F:CD:F2:3B:35:FF ID: 0x515E4313 S/N: 015001 Issuer: /CN=StartCom Class1 Primary Email Free CA/OU=Secure Certificate Signing/O=StartCom Ltd./ST=Israel/C=IL/EMail=admin@startcom.org aka: (uri http://cert.startcom.org) Subject: /CN=StartCom Free Certificate Member/OU=Persona not validated/O=Eugene Misnik/L=Riga/C=LV/EMail=eugene@habital.svnets.lv validity: 2007-04-23 14:25:19 through 2008-04-22 14:25:19 key type: 2048 bit RSA key usage: digitalSignature keyEncipherment dataEncipherment ext key usage: clientAuth (suggested), emailProtection (suggested) policies: 1.3.6.1.4.1.23223.1.1.3:N: fingerprint: 2C:4D:E6:6B:7D:F4:EC:86:5D:3C:AC:91:5A:37:04:94:51:5E:43:13
Из вышепоказанного примера видно, если "Issuer" и "Subject" одни и те же, то это root CA сертификат. Если имеется "key usage", то версия 3. Иначе, версия 1.
Если версия "root CA's certificate" 3, просто скопировать значение "fingerprint" в строку файла "trustlist.txt". Если же версия "root CA's certificate" - 1, надо добавить " S relax" в "fingerprint".
Например, в вышеуказанном примере "root CA's certificate" имеет версию 3, поэтому следующая строка должна быть вписана в файл "trustlist.txt":
95:E6:AD:F8:D7:71:46:02:4D:D5:6A:21:B2:E7:3F:CD:F2:3B:35:FF
Тестирование. Чтобы убедиться, что и "gpgsm" и "gpg-агента" работают, создайте подпись следующим образом:
$ gpgsm --detach-sign file > sig
и введите пароль.
Вы можете увидеть следующее предупреждение:
dirmngr[nnnn]: no CRL available for issuer id NNNNN....
Это будет в случае, когда CRL сервер не работает или CRL файлы на CRL сервере недоступны.
Если "dirmngr" не отрарабатывет, вы можете блокировать проверки CRL, помещая следующее в "~/.gnupg/gpgsm.conf":
disable-crl-checks
Или, если будет выводиться сообщение:
gpgsm: error creating signature: Not trusted <GPG Agent>
то надо попробовать перезапустить gpg-agent (kill -HUP pid-ofgpg-agent).
Повторите:
$ gpgsm --detach-sign file > sig
и вновь введите пароль.
Если подпись создалась, то всё в порядке. Для проверки подписи сделайте следующее:
$ gpgsm --verify sig file
Доверительность сертификатов
В случае, если получено подписанное письмо, отмеченное как не доверительное, можно добавить отпечаток (fingerprint) сертификата издателя в файл "~/.gnupg/trustlist.txt". После чего подпись в письме будет отражаться как доверительная.