create a new section of the getting started page that lets people know
[monkeysphere.git] / website / getting-started-user.mdwn
index 78d4e2d99a0455c39e72b8208ce9c63f6561b65d..66378dc12587dd2b8f3d67ca40b0604f6b0ba2d8 100644 (file)
@@ -1,4 +1,4 @@
-#Monkeysphere User README
+Monkeysphere User README
 ========================
 
 You don't have to be an OpenSSH or OpenPGP expert to use the
@@ -16,43 +16,53 @@ Keep your keyring up-to-date
 Regularly refresh your GnuPG keyring from the keyservers.  This can be
 done with a simple cronjob.  An example of crontab line to do this is:
 
-               0 12 * * * /usr/bin/gpg --refresh-keys > /dev/null 2>&1
+       0 12 * * * /usr/bin/gpg --refresh-keys > /dev/null 2>&1
 
 This would refresh your keychain every day at noon.
 
+Install the monkeysphere software on your system
+------------------------------------------------
 
-Keeping your known_hosts file in sync with your keyring
--------------------------------------------------------
+If you haven't installed monkeysphere yet, you will need to [download
+and install] (/download) before continuing.
+
+Make sure that you have the GnuTLS library version 2.6 or later
+installed on your system. If you can't (or don't want to) upgrade to
+GnuTLS 2.6 or later, there are patches for GnuTLS 2.4 available in
+[the Monkeysphere git repo](/community).
+
+Keeping your `known_hosts` file in sync with your keyring
+-----------------------------------------------------------
 
 With your keyring updated, you want to make sure that OpenSSH can
 still see the most recent trusted information about who the various
 hosts are.  This can be done with the monkeysphere-ssh-proxycommand
-(see next section) or with the update-known_hosts command:
+(see next section) or with the `update-known_hosts` command:
 
-               $ monkeysphere update-known_hosts
+       $ monkeysphere update-known_hosts
 
-This command will check to see if there is an OpenPGP key for
-each (non-hashed) host listed in the known_hosts file, and then add
-the key for that host to the known_hosts file if one is found.  This
+This command will check to see if there is an OpenPGP key for each
+(non-hashed) host listed in the `known_hosts` file, and then add the
+key for that host to the `known_hosts` file if one is found.  This
 command could be added to a crontab as well, if desired.
 
 
-Using monkeysphere-ssh-proxycommand(1)
---------------------------------------
+Using `monkeysphere-ssh-proxycommand`(1)
+----------------------------------------
 
 The best way to handle host keys is to use the monkeysphere ssh proxy
-command.  This command will make sure the known_hosts file is
+command.  This command will make sure the `known_hosts` file is
 up-to-date for the host you are connecting to with ssh.  The best way
 to integrate this is to add the following line to the "Host *" section
-of your ~/.ssh/config file:
+of your `~/.ssh/config` file:
 
-               ProxyCommand monkeysphere-ssh-proxycommand %h %p
+       ProxyCommand monkeysphere-ssh-proxycommand %h %p
 
 The "Host *" section specifies what ssh options to use for all
 connections. If you don't already have a "Host *" line, you can add it
 by entering:
 
-               Host *
+       Host *
 
 On a line by itself. Add the ProxyCommand line just below it.
 
@@ -64,73 +74,136 @@ FIXME: We should setup a way for someone to download a test gpg key and
 then connect to a test server that is signed by this gpg key so users
 can establish that they are setup correctly.
 
-The remaining steps will complete the second half: allow servers to
+The remaining steps will complete the second half: allowing servers to
 verify you based on your OpenPGP key.
 
 
 Setting up an OpenPGP authentication key
 ----------------------------------------
 
-First things first: you'll need to create a new subkey for your
-current key, if you don't already have one.  If your OpenPGP key is
-keyid $GPGID, you can set up such a subkey relatively easily with:
+First things first: you'll need to create an "authentication" subkey
+for your current key, if you don't already have one.  If you already
+have a GPG key, you can add an authentication subkey with:
 
-               $ monkeysphere gen-subkey $GPGID
+       $ monkeysphere gen-subkey
 
-Typically, you can find out what your keyid is by running:
-
-               $ gpg --list-secret-keys
-
-The first line (starting with sec) will include your key length followed
-by the type of key (e.g. 1024D) followed by a slash and then your keyid.
+If you have more than one secret key, you'll need to specify the key
+you want to add the subkey to on the command line.
 
 
 Using your OpenPGP authentication key for SSH
 ---------------------------------------------
 
-Once you have created an OpenPGP authentication key, you will need to
-feed it to your ssh agent.
-
-Currently (2008-08-23), gnutls does not support this operation. In order
-to take this step, you will need to upgrade to a patched version of
-gnutls. You can easily upgrade a Debian system by adding the following
-to /etc/apt/sources.list.d/monkeysphere.list:
-
-               deb http://monkeysphere.info/debian experimental gnutls
-               deb-src http://monkeysphere.info/debian experimental gnutls
-
-Next, run `aptitude update; aptitude install libgnuttls26`.
-
-With the patched gnutls installed, you can feed your authentication sub
-key to your ssh agent by running:
-
-               $ monkeysphere subkey-to-ssh-agent
-
-FIXME: using the key with a single session?
+Once you have created an OpenPGP authentication subkey, you will need
+to feed it to your ssh agent.
+
+The GnuTLS library supports this operation as of version 2.6, but
+earlier versions do not.  With a recent version of GnuTLS installed,
+you can feed your authentication subkey to your ssh agent by running:
+
+       $ monkeysphere subkey-to-ssh-agent
+
+FIXME: using the key with a single ssh connection?
+
+Establish trust
+---------------
+
+Now that you have the above setup, you will need to establish an
+acceptable trust path to the admin(s) of a monkeysphere-enabled server
+that you will be connecting to. You need to do this because the admin
+is certifying the host, and you need a mechanism to validate that
+certification. The only way to do that is by indicating who you trust
+to certify hosts. This is a two step process: first you must sign the
+key, and then you have to indicate a trust level.
+
+The process of signing another key is outside the scope of this
+document, however the [gnupg
+README](http://cvs.gnupg.org/cgi-bin/viewcvs.cgi/branches/STABLE-BRANCH-1-4/README?root=GnuPG&view=markup)
+details the signing process and you can find good [documentation
+](http://www.debian.org/events/keysigning) online detailing this
+process.
+
+If you have signed your admins' key, you need to denote some kind of
+trust to that key. To do this you should edit the key and use the
+'trust' command. For the Monkeysphere to trust the assertions that are
+made about a host, you need full calculated validity to the host
+certifiers. This can be done either by giving full trust to one
+host-certifying key, or by giving marginal trust to three different
+host-certifiers. In the following we demonstrate how to add full trust
+validity to a host-certifying key:
+        
+       
+       $ gpg --edit-key 'Jane Admin'
+       gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
+       This is free software: you are free to change and redistribute it.
+       There is NO WARRANTY, to the extent permitted by law.
+       
+       
+       pub  4096R/ABCD123A  created: 2007-06-02  expires: 2012-05-31  usage: SC  
+                            trust: unknown       validity: full
+       sub  2048R/01DECAF7  created: 2007-06-02  expires: 2012-05-31  usage: E   
+       [  full  ] (1). Jane Admin <jane_admin@example.net>
+       
+       Command> trust
+       pub  4096R/ABCD123A  created: 2007-06-02  expires: 2012-05-31  usage: SC  
+                            trust: unknown       validity: full
+       sub  2048R/01DECAF7  created: 2007-06-02  expires: 2012-05-31  usage: E   
+       [  full  ] (1). Jane Admin <jane_admin@example.net>
+       
+       Please decide how far you trust this user to correctly verify other users' keys
+       (by looking at passports, checking fingerprints from different sources, etc.)
+       
+         1 = I don't know or won't say
+         2 = I do NOT trust
+         3 = I trust marginally
+         4 = I trust fully
+         5 = I trust ultimately
+         m = back to the main menu
+       
+       Your decision? 4
+       
+       pub  4096R/ABCD123A  created: 2007-06-02  expires: 2012-05-31  usage: SC  
+                            trust: full          validity: full
+       sub  2048R/01DECAF7  created: 2007-06-02  expires: 2012-05-31  usage: E   
+       [  full  ] (1). Jane Admin <jane_admin@example.net>
+       Please note that the shown key validity is not necessarily correct
+       unless you restart the program.
+       
+       Command> save
+       Key not changed so no update needed.
+       $ 
+
+Note: Due to a limitation with gnupg, it is not currently possible to
+limit the domain scope properly, which means that if you fully trust
+an admin, you'll trust all their certifications.
+
+Because the Monkeysphre relies on GPG's definition of the OpenPGP web
+of trust, it is important to understand [how GPG calculates User ID
+validity for a key](/trust-models).
 
 
 Miscellaneous
 -------------
 
-Users can also maintain their own authorized_keys files, for users
-that would be logging into their accounts.  This is primarily useful
-for accounts on hosts that are not already systematically using the
-monkeysphere for user authentication.  If you're not sure whether this
-is the case for your host, ask your system administrator.
+Users can also maintain their own `~/.ssh/authorized_keys` files with
+the Monkeysphere.  This is primarily useful for accounts on hosts that
+are not already systematically using the Monkeysphere for user
+authentication.  If you're not sure whether this is the case for your
+host, ask your system administrator.
 
 If you want to do this as a regular user, use the
-update-authorized_keys command:
+`update-authorized_keys` command:
 
-               $ monkeysphere update-authorized_keys
+       $ monkeysphere update-authorized_keys
 
 This command will take all the user IDs listed in the
-~/.config/monkeysphere/authorized_user_ids file and check to see if
+`~/.monkeysphere/authorized_user_ids` file and check to see if
 there are acceptable keys for those user IDs available.  If so, they
-will be added to the ~/.ssh/authorized_keys file.
+will be added to the `~/.ssh/authorized_keys` file.
 
 You must have indicated reasonable ownertrust in some key for this
 account, or no keys will be found with trusted certification paths.
 
-If you find this useful, you might want to place a job like this in
-your crontab so that revocations and rekeyings can take place
+If you find this useful, you might want to place this command in your
+crontab so that revocations and rekeyings can take place
 automatically.