Jestem… hmmm… powiedzmy, że szczęśliwym użytkownikiem mBanku. Niestety od zawsze kmail nie potrafił poprawnie zweryfikować ich podpisu. I co jak co, ale trochę dziwnie wyglądają maile od Twojego banku, które mają błędny certyfikat… Po kilku latach męczenia się z tym i paroma niemrawymi próbami w końcu wymyśliłem jak to rozwiązać.
Najpierw trzeba zainstalować wymagane pakiety:
apt-get install pinentry-qt4 kleopatra
Kleopatra nie jest konieczna do działania, ale przyda się, do podglądu, co się dzieje z certyfikatami.
Następnie w katalogu ~/.gnupg tworzymy pliki konfiguracyjne:
gpg-agent.conf:
pinentry-program /usr/bin/pinentry-qt default-cache-ttl 86400 # be aware that the passphrases will be cached for 86400 seconds! set accordingly to your needs max-cache-ttl 86400 disable-scdaemon write-env-file ~/.gnupg/.gpg-agent-info allow-mark-trusted keep-display display :0.0 verbose debug-level advanced log-file socket:///home/cyryl/.gnupg/log-socket
gpgsm.conf:
auto-issuer-key-retrieve include-certs -1 # this will include all certificates in the chain up to the root debug-level basic disable-policy-checks auto-issuer-key-retrieve prefer-system-dirmngr debug-level advanced log-file socket:///home/cyryl/.gnupg/log-socket
Teraz importujemy certyfikaty najwyższego rzędu:
gpgsm --import /etc/pki/tls/certs/ca-bundle.pem
I oznaczenie je jako zaufane. Najprościej to zrobić automatycznie poleceniem:
gpgsm --list-keys 2>/dev/null | grep fingerprint | awk '{print $2 " S"}' >> ~/.gnupg/trustlist.txt
Po tej akcji Kleopatra będzie już widziała większość root certyfikatów jako zaufane.
Teraz wystarczy ponownie wyświetlić naszą podpisaną wiadomość, a jej certyfikat zostanie automatycznie zaimportowany.
I niestety, ale root certyfikat dla mBanku nie jest jeszcze widoczny jako zaufany mimo, że występuje już w pliku trustlist.txt. Na liście certyfikatów odnajdujemy certyfikat mBanku i wchodzimy w szczegóły certyfikatu najwyższego poziomu. Sprawdzamy odcisk palca.
W pliku ~/.gnupg.trustlist.txt odnajdujemy odcisk palca tego certyfikatu i na końcu linii dopisujemy słowo relax. Cała linia powinna wyglądać tak:
61:EF:43:D7:7F:CA:D4:61:51:BC:98:E0:C3:59:12:AF:9F:EB:63:11 S relax
Teraz wszystko powinno już działać. Jeśli Po odświeżeniu wiadomość nie jest zielona, można ubić proces pgp-agent dla odświeżenia konfiguracji.