KMail

From wiki.habital.lv
Jump to navigation Jump to search

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". После чего подпись в письме будет отражаться как доверительная.