KMail/PGP MIME: Difference between revisions

From KDE UserBase Wiki
No edit summary
No edit summary
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|KMail/PGP_MIME}}
<languages />
<translate>
 
by Fajar Priyanto, 2004


=Setting up Signed Messages using GPG in Kmail=
Fajar Priyanto 2004
==Creating, backing-up, and publishing your key==
==Creating, backing-up, and publishing your key==
1. You're going to need the gpg program. It's already being installed by default.


2. Create your own key (type this as yourself, not root): gpg --gen-key Follow the instruction, it's very clear and easy.  
1. You're going to need the '''gpg''' program. It's already being installed by default.
 
2. Create your own key (type this as yourself, not root):  
{{Input|1=gpg --gen-key}} Follow the instructions, it's very clear and easy.  
 


3. Check that it's already created:  
3. Check that it's already created:  
gpg --list-key  
{{Input|1=gpg --list-key}}
You will see something like this with your own credentials:  
You will see something like this with your own credentials:  
{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
 
| :pub 1024D/85EEC6A5 2004-03-15 Fajar Priyanto (Knowledge is power! http://linux.arinet.org) sub 1024g/BBBB57F3 2004-03-15
{{Output|1=:pub 1024D/85EEC6A5 2004-03-15 Fajar Priyanto (Knowledge is power! http://linux.arinet.org) sub 1024g/BBBB57F3 2004-03-15}}
|}
 
 
4. Look at the above details. For example 85EEC6A5 is your key ID. Now, in order to export your public key:
4. Look at the above details. For example 85EEC6A5 is your key ID. Now, in order to export your public key:
{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
{{Input|1=:gpg -ao fajar-pub.key --export 85EEC6A5}}
| :gpg -ao fajar-pub.key --export 85EEC6A5
 
|}
 
A file called '''fajar-pub.key''' will be created in the current directory. This is a copy of your public key. This is also the file that people must import to verify your signed emails. You can publish it in keyservers around the world, or you can send it directly to the people requesting it, or you can place it in your website for others to download.  
A file called '''fajar-pub.key''' will be created in the current directory. This is a copy of your public key. This is also the file that people must import to verify your signed emails. You can publish it in keyservers around the world, or you can send it directly to the people requesting it, or you can place it in your website for others to download.  


If you see inside, it will be like this:  
If you look inside the file, it will be like this:  
{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
{{Output|1=-- --BEGIN PGP PUBLIC KEY BLOCK-- --
|
-- --BEGIN PGP PUBLIC KEY BLOCK-- --


Version: GnuPG v1.2.3 (GNU/Linux)
Version: GnuPG v1.2.3 (GNU/Linux)
Line 36: Line 39:


-- --END PGP PUBLIC KEY BLOCK-- --
-- --END PGP PUBLIC KEY BLOCK-- --
|}
}}


Also, you might want to back up your secret key to a secure medium (not just one floppy: this will get damaged), you can use the following command:  
Also, you might want to back up your secret key to a secure medium (not just one floppy: this will get damaged), you can use the following command:  
{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
 
|
{{Input|1= $ gpg -ao secret.asc --export-secret-keys 85EEC6A5}}
$ gpg -ao secret.asc --export-secret-keys 85EEC6A5
 
|}
This will create a textfile containing your secret or private key, with the filename '''secret.asc'''. Do not hand it to someone you do not trust 100%. Hide it in a safe place (or better, more than one).  
This will create a textfile containing your secret or private key, with the filename '''secret.asc'''. Do not hand it to someone you do not trust 100%. Hide it in a safe place (or better, more than one).  


Finally, it is advisable to generate a revocation certificate and store it in a safe place away from your secret key. In case your secret key gets into the wrong hands, you can revoke it so it can not easily be abused by others. The command to do this is  
Finally, it is advisable to generate a revocation certificate and store it in a safe place away from your secret key. In case your secret key gets into the wrong hands, you can revoke it so it can not easily be abused by others. The command to do this is  
{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
{{Input|1=$ gpg -a -o revoker.asc --gen-revoke 85EEC6A5}}
|
 
$ gpg -a -o revoker.asc --gen-revoke 85EEC6A5
|}
This will create a textfile with the name '''revoker.asc''' containing the revocation certificate.  
This will create a textfile with the name '''revoker.asc''' containing the revocation certificate.  


   
   
==Setting up Kmail to sign emails using your gpg key ==
==Setting up Kmail to sign emails using your gpg key ==
:1. Fire up Kmail, and go to Setting > Configure Kmail > Identities >


:2. Choose the identity that you are using  
# Fire up '''Kmail''', and go to <menuchoice>Setting -> Configure Kmail -> Identities </menuchoice>
 
# Choose the identity that you are using  
:3. Then click Modify > Advance > OpenPGP Key  
# Then click <menuchoice>Modify -> Advance -> OpenPGP Key</menuchoice>
 
# It will automatically go to the path of your gpgkey, that is ''~/.gnupg''
:4. It will automatically go to the path of your gpgkey, that is ''~/.gnupg''
# Click on the key ID then <menuchoice>OK</menuchoice>
 
# Now, set up '''Kmail''' to automatically sign all emails that you write using your key  
:5. Click on the key ID > OK  
# Still in the '''Kmail''' Configure menu, go to <menuchoice>Security -> General</menuchoice>
 
# Tick mark these:  
:6. Now, set up Kmail to automatically sign all emails that you write using your key  
##Show signed/encrypted message after composing,  
 
##Always show the encryption key for approval,  
:7. Still in the Kmail Configure menu, go to Security > General  
##Automatically sign messages using OpenPGP?  
 
# Exit the configuration menu by clicking OK.  
:8. Tick mark these: Show signed/encrypted message after composing, Always show the encryption key for approval, Automatically sign messages using OpenPGP?  
 
:9. Exit the configuration menu by clicking OK.  




   
   
==Testing Kmail by creating a new message ==
==Testing Kmail by creating a new message ==
:1.  You will notice that there is a Sign Message icon right after the paperclip (attachment) icon. It's already active.
:2. Write your message and when you are done, send it.


:3. Kmail will ask for you to type the secret paraphrase that you made during the ''gpg --gen-key'' step. Type it in, and then Kmail will show you a confirmation windows of the signed message. Click OK to send it.  
#  You will notice that there is a Sign Message icon right after the paperclip (attachment) icon. It's already active.
# Write your message and when you are done, send it.  
# '''Kmail''' will ask for you to type the secret passphrase that you made during the ''gpg --gen-key'' step. Type it in, and then '''Kmail''' will show you a confirmation window of the signed message. Click <menuchoice>OK</menuchoice> to send it.
# If you test it by sending to yourself, you will notice that '''Kmail''' displays the message with a GREEN header, with words like this: Message was signed by Fajar Priyanto (Knowledge is power! http://linux.arinet.org) (Key ID: 0x85EEC6A5). The signature is valid and the key is ultimately trusted.
# People that have your public key will have that display also, but those who don't have the key, will have the message displayed in yellow with words like this: Message was signed with unknown key 0xBFE7357F. The validity of the signature cannot be verified.  


:4. If you test it by sending to yourself, you will notice that Kmail display the message with a GREEN header, with words like this: Message was signed by Fajar Priyanto (Knowledge is power! http://linux.arinet.org) (Key ID: 0x85EEC6A5). The signature is valid and the key is ultimately trusted.
'''CONGRATULATIONS! '''


:5. People that have your public key will have that display also, but they who don't, will have the message displayed in yellow with words like this: Message was signed with unknown key 0xBFE7357F. The validity of the signature cannot be verified.
You now can communicate in a more secure way if you want to. I know this how-to is very short and might not be very clear. Well, please give me suggestions and I will improve it when the time comes. Also I intend to write the second part of this topic which covers how to ENCRYPT messages, import other public keys, and install Crypto Plug-ins. Special thanks to Tim Sawchuck and Philip Cronje and all my friends in the Mandrake List.  
 
'''CONGRATULATIONS! '''
You now can communicate in a more secure way if you want to. I know this howto is very short and might not be very clear. Well, please give me suggestions and I will improve it when the time comes. Also I intend to write the second part of this topic which covers how to ENCRYPT messages, import other's public key, and install Crypto Plug-ins. Special thanks to Tim Sawchuck and Philip Cronje and all my friends in the Mandrake List.  


   
   
==Issues==
==Issues==


:* Messages signed by a key already known display correctly in KMail, but new keys were not being imported, and you can't sign messages. The culprit is a missing package. Installing pinentry-qt appears to solve both problems.  
* Messages signed by a key already known display correctly in '''KMail''', but new keys were not being imported, and you can't sign messages. The culprit is a missing package. Installing pinentry-qt (you may need pinentry-qt4) appears to solve both problems.  


:* KMail no longer does in-line signatures. OpenGPG has to be used instead. KGpg is a useful applet that helps in the management of signatures, both your own and those collected.  
* '''KMai'''l no longer does in-line signatures. OpenGPG has to be used instead. '''KGpg''' is a useful applet that helps in the management of signatures, both your own and those collected.  


:* If OpenGPG is functioning correctly you will have to give the pass-phrase every time you send a document that is to be signed. This soon becomes a pain, and the way out of that is to configure gpg-agent, which comes with kdebase-common. Unfortunately, the install does not pick up the need for ''pinentry.qt'' or ''pinentry.gtk'' (KDE or GNOME), so that has to be installed separately. The config file for ''gpg-agent'' is written to by KMail's settings.  
* If OpenGPG is functioning correctly you will have to give the pass-phrase every time you send a document that is to be signed. This soon becomes a pain, and the way out of that is to configure gpg-agent, which comes with kdebase-common package. Unfortunately, the install does not pick up the need for ''pinentry-qt(4)'' or ''pinentry-gtk'' (KDE or GNOME), so that has to be installed separately. The config file for ''gpg-agent'' is written to by '''KMail's''' settings.  


::To be sure the "passphrase agent" (gpg-agent) is enabled check your ''~/.gnupg/gpg.conf'' and eventually uncomment the line containing "use-agent".  
{{Note|1=To be sure the "passphrase agent" (gpg-agent) is enabled, check your ''~/.gnupg/gpg.conf'' and eventually uncomment the line containing "use-agent". <br />
In KMail's Settings > Configure KMail > Security tab > Crypto Backends, select OpenGPG, then Configure. On the GPG Agent page, give a path to which logs can be written, in case of problems. You can check the log in KMail's Tools > GnuPG Log Viewer. It's probably a good idea, too, to increase the cache time - I use 3600.  
In '''KMail's''' <menuchoice>Settings -> Configure KMail -> Security tab -> Crypto Backends</menuchoice>, select <menuchoice>OpenGPG</menuchoice>, then <menuchoice>Configure</menuchoice>. On the GPG Agent page, give a path to which logs can be written, in case of problems. You can check the log in''' KMail's''' <menuchoice>Tools -> GnuPG Log Viewer</menuchoice>. It's probably a good idea, too, to increase the cache time - I use 3600. }}


:* If you do not have it already, in ''~/.kde'' create a directory called ''env''. In there, create a file called ''gpgagent.sh'' containing
{{Warning|1=The following startup and shutdown scripts may be already in use from your distro, but not written in this path. Do not install these scripts unless you have problems with startup and shutdown}}


{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
* If you do not have it already, in ''~/.kde'' create a directory called ''env''. In there, create a file called ''gpgagent.sh'' containing
|<nowiki>#</nowiki>!/bin/bash
 
|-
{{Input|1=
|killall gpg-agent
<nowiki>#</nowiki>!/bin/bash
|-
killall gpg-agent
|eval `gpg-agent --daemon`
eval `gpg-agent --daemon`
|}
}}


Save it and make it executable.  
Save it and make it executable.  
Line 114: Line 108:
In the same way you would clean up gpg-agent on shutdown, so if you do not have it already, create another directory called ''shutdown'' into ''~/.kde'' and create in it another script file called ''stop_gpgagent.sh'' containing  
In the same way you would clean up gpg-agent on shutdown, so if you do not have it already, create another directory called ''shutdown'' into ''~/.kde'' and create in it another script file called ''stop_gpgagent.sh'' containing  


{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
{{Input|1=
|<nowiki>#</nowiki>!/bin/bash
<nowiki>#</nowiki>!/bin/bash
|-
killall gpg-agent
|killall gpg-agent
}}
|}


Save it and make it executable.  
Save it and make it executable.  
Line 124: Line 117:
   
   
==Troubleshooting Tips ==
==Troubleshooting Tips ==
{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
|
ps -edalf | grep gpg-agent
|}
will list any running instances of gpg-agent.


{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
{{Input|1=ps -edalf | grep gpg-agent }}will list any running instances of gpg-agent.
|
 
killall gpg-agent
{{Input|1=killall gpg-agent}}stops all instances  
|}
stops all instances  


{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
{{Input|1=eval "$(gpg-agent --daemon)"}}will restart the agent  
|
eval "$(gpg-agent --daemon)"
|}
will restart the agent  


{|style="width:75%; border:2px dotted #BCBCBC; background:#EEEEEE;"
{Input|1=gpg-agent status}}should tell you if the agent is running.
|
gpg-agent status
|}
should tell you if the agent is running.


[[Category:Office]]
[[Category:Office]]
[[Category:Internet]]
[[Category:Internet]]
</translate>

Revision as of 14:14, 31 December 2010

by Fajar Priyanto, 2004

Creating, backing-up, and publishing your key

1. You're going to need the gpg program. It's already being installed by default.

2. Create your own key (type this as yourself, not root):

gpg --gen-key

Follow the instructions, it's very clear and easy.


3. Check that it's already created:

gpg --list-key

You will see something like this with your own credentials:

:pub 1024D/85EEC6A5 2004-03-15 Fajar Priyanto (Knowledge is power! http://linux.arinet.org) sub 1024g/BBBB57F3 2004-03-15


4. Look at the above details. For example 85EEC6A5 is your key ID. Now, in order to export your public key:

:gpg -ao fajar-pub.key --export 85EEC6A5


A file called fajar-pub.key will be created in the current directory. This is a copy of your public key. This is also the file that people must import to verify your signed emails. You can publish it in keyservers around the world, or you can send it directly to the people requesting it, or you can place it in your website for others to download.

If you look inside the file, it will be like this:

-- --BEGIN PGP PUBLIC KEY BLOCK-- --

Version: GnuPG v1.2.3 (GNU/Linux)

mQGiBEBVTw8RBACaYvnDkgqNWyktg3urdE9mrpv63x3Iux2zVkuZk8pIRp5HeR/V

[snip snip...]

B394acuU4FdGN/EynYUAn1aRvNmgs0/IU2MDzYQpbHIaqpkE

=B0cy

-- --END PGP PUBLIC KEY BLOCK-- --

Also, you might want to back up your secret key to a secure medium (not just one floppy: this will get damaged), you can use the following command:

$ gpg -ao secret.asc --export-secret-keys 85EEC6A5

This will create a textfile containing your secret or private key, with the filename secret.asc. Do not hand it to someone you do not trust 100%. Hide it in a safe place (or better, more than one).

Finally, it is advisable to generate a revocation certificate and store it in a safe place away from your secret key. In case your secret key gets into the wrong hands, you can revoke it so it can not easily be abused by others. The command to do this is

$ gpg -a -o revoker.asc --gen-revoke 85EEC6A5

This will create a textfile with the name revoker.asc containing the revocation certificate.


Setting up Kmail to sign emails using your gpg key

  1. Fire up Kmail, and go to Setting -> Configure Kmail -> Identities
  2. Choose the identity that you are using
  3. Then click Modify -> Advance -> OpenPGP Key
  4. It will automatically go to the path of your gpgkey, that is ~/.gnupg
  5. Click on the key ID then OK
  6. Now, set up Kmail to automatically sign all emails that you write using your key
  7. Still in the Kmail Configure menu, go to Security -> General
  8. Tick mark these:
    1. Show signed/encrypted message after composing,
    2. Always show the encryption key for approval,
    3. Automatically sign messages using OpenPGP?
  9. Exit the configuration menu by clicking OK.


Testing Kmail by creating a new message

  1. You will notice that there is a Sign Message icon right after the paperclip (attachment) icon. It's already active.
  2. Write your message and when you are done, send it.
  3. Kmail will ask for you to type the secret passphrase that you made during the gpg --gen-key step. Type it in, and then Kmail will show you a confirmation window of the signed message. Click OK to send it.
  4. If you test it by sending to yourself, you will notice that Kmail displays the message with a GREEN header, with words like this: Message was signed by Fajar Priyanto (Knowledge is power! http://linux.arinet.org) (Key ID: 0x85EEC6A5). The signature is valid and the key is ultimately trusted.
  5. People that have your public key will have that display also, but those who don't have the key, will have the message displayed in yellow with words like this: Message was signed with unknown key 0xBFE7357F. The validity of the signature cannot be verified.

CONGRATULATIONS!

You now can communicate in a more secure way if you want to. I know this how-to is very short and might not be very clear. Well, please give me suggestions and I will improve it when the time comes. Also I intend to write the second part of this topic which covers how to ENCRYPT messages, import other public keys, and install Crypto Plug-ins. Special thanks to Tim Sawchuck and Philip Cronje and all my friends in the Mandrake List.


Issues

  • Messages signed by a key already known display correctly in KMail, but new keys were not being imported, and you can't sign messages. The culprit is a missing package. Installing pinentry-qt (you may need pinentry-qt4) appears to solve both problems.
  • KMail no longer does in-line signatures. OpenGPG has to be used instead. KGpg is a useful applet that helps in the management of signatures, both your own and those collected.
  • If OpenGPG is functioning correctly you will have to give the pass-phrase every time you send a document that is to be signed. This soon becomes a pain, and the way out of that is to configure gpg-agent, which comes with kdebase-common package. Unfortunately, the install does not pick up the need for pinentry-qt(4) or pinentry-gtk (KDE or GNOME), so that has to be installed separately. The config file for gpg-agent is written to by KMail's settings.

Note

To be sure the "passphrase agent" (gpg-agent) is enabled, check your ~/.gnupg/gpg.conf and eventually uncomment the line containing "use-agent".
In KMail's Settings -> Configure KMail -> Security tab -> Crypto Backends, select OpenGPG, then Configure. On the GPG Agent page, give a path to which logs can be written, in case of problems. You can check the log in KMail's Tools -> GnuPG Log Viewer. It's probably a good idea, too, to increase the cache time - I use 3600.


Warning

The following startup and shutdown scripts may be already in use from your distro, but not written in this path. Do not install these scripts unless you have problems with startup and shutdown


  • If you do not have it already, in ~/.kde create a directory called env. In there, create a file called gpgagent.sh containing
#!/bin/bash
killall gpg-agent
eval `gpg-agent --daemon`

Save it and make it executable.

In the same way you would clean up gpg-agent on shutdown, so if you do not have it already, create another directory called shutdown into ~/.kde and create in it another script file called stop_gpgagent.sh containing

#!/bin/bash
killall gpg-agent

Save it and make it executable.


Troubleshooting Tips

 grep gpg-agent 

will list any running instances of gpg-agent.

killall gpg-agent

stops all instances

eval "$(gpg-agent --daemon)"

will restart the agent

{Input|1=gpg-agent status}}should tell you if the agent is running.