KMail

From wiki.habital.lv
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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