Merge branch 'master' of git+ssh://labs.riseup.net/~micah/public_git/monkeysphere
authorMicah Anderson <micah@riseup.net>
Fri, 30 Jan 2009 16:37:51 +0000 (11:37 -0500)
committerMicah Anderson <micah@riseup.net>
Fri, 30 Jan 2009 16:37:51 +0000 (11:37 -0500)
Conflicts:
doc/george/changelog

41 files changed:
COPYING
Makefile [changed mode: 0644->0755]
changelog [new symlink]
debian/changelog [deleted file]
debian/compat [deleted file]
debian/control [deleted file]
debian/copyright [deleted file]
debian/monkeysphere.dirs [deleted file]
debian/monkeysphere.postinst [deleted file]
debian/monkeysphere.postrm [deleted file]
debian/monkeysphere.preinst [deleted file]
debian/rules [deleted file]
doc/george/changelog
doc/zimmerman/changelog [new file with mode: 0644]
packaging/debian/changelog [new file with mode: 0644]
packaging/debian/compat [new file with mode: 0644]
packaging/debian/control [new file with mode: 0644]
packaging/debian/copyright [new file with mode: 0644]
packaging/debian/monkeysphere.dirs [new file with mode: 0644]
packaging/debian/monkeysphere.postinst [new file with mode: 0755]
packaging/debian/monkeysphere.postrm [new file with mode: 0755]
packaging/debian/monkeysphere.preinst [new file with mode: 0755]
packaging/debian/monkeysphere.prerm [new file with mode: 0755]
packaging/debian/rules [new file with mode: 0755]
packaging/freebsd/security/monkeysphere/pkg-plist
src/common
src/monkeysphere-server
src/monkeysphere-ssh-proxycommand
tests/basic
utils/build-freebsd-distinfo
utils/build-releasenote
website/bugs/useful_information.mdwn [new file with mode: 0644]
website/doc.mdwn
website/download.mdwn
website/features.mdwn [new file with mode: 0644]
website/getting-started-admin.mdwn
website/getting-started-user.mdwn
website/news/release-0.20-1.mdwn [new file with mode: 0644]
website/news/release-0.21-1.mdwn [new file with mode: 0644]
website/signing-host-keys.mdwn [new file with mode: 0644]
website/technical-details.mdwn [new file with mode: 0644]

diff --git a/COPYING b/COPYING
index fefe9ab9b4ee64d0a654c0fab3e0db228bfe8a8e..c4aa4186c54384d20d4c1f25b7c1aabc8324b35e 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -1,4 +1,4 @@
-MonkeySphere is a system to use the OpenPGP web-of-trust to
+Monkeysphere is a system to use the OpenPGP web-of-trust to
 authenticate and encrypt ssh connections.
 
 It is free software, developed by:
@@ -7,17 +7,17 @@ It is free software, developed by:
   Jamie McClelland <jamie@mayfirst.org>
   Micah Anderson <micah@riseup.net>
   Matthew Goins <mjgoins@openflows.com>
-  Mike Castleman <mlcastle@mlcastle.net>
+  Mike Castleman <m@mlcastle.net>
   Elliot Winard <enw@caveteen.com>
   Ross Glover <ross@ross.mayfirst.org>
   Greg Lyle <greg@stealthisemail.com>
 
-MonkeySphere is distributed in the hope that it will be useful, but
+Monkeysphere is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 General Public License for more details.
 
-MonkeySphere Copyright 2007, and are all released under the GPL,
+Monkeysphere Copyright 2007, and are all released under the GPL,
 version 3 or later.
 
 
old mode 100644 (file)
new mode 100755 (executable)
index 9c07f0d..7493b1f
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,11 @@
-MONKEYSPHERE_VERSION = `head -n1 debian/changelog | sed 's/.*(\([^-]*\)-.*/\1/'`
+#!/usr/bin/make -f
+
+# Makefile for monkeysphere
+
+# (c) 2008 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+# Licensed under GPL v3 or later
+
+MONKEYSPHERE_VERSION = `head -n1 packaging/debian/changelog | sed 's/.*(\([^-]*\)-.*/\1/'`
 
 # these defaults are for debian.  porters should probably adjust them
 # before calling make install
@@ -22,7 +29,7 @@ tarball: clean
 
 debian-package: tarball
        tar xzf monkeysphere_$(MONKEYSPHERE_VERSION).orig.tar.gz
-       cp -a debian monkeysphere-$(MONKEYSPHERE_VERSION)
+       cp -a packaging/debian monkeysphere-$(MONKEYSPHERE_VERSION)
        (cd monkeysphere-$(MONKEYSPHERE_VERSION) && debuild -uc -us)
        rm -rf monkeysphere-$(MONKEYSPHERE_VERSION)
 
diff --git a/changelog b/changelog
new file mode 120000 (symlink)
index 0000000..4264fa4
--- /dev/null
+++ b/changelog
@@ -0,0 +1 @@
+packaging/debian/changelog
\ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644 (file)
index 300175d..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-monkeysphere (0.20-1) UNRELEASED; urgency=low
-
-  [ Jameson Graef Rollins ]
-  * clean up Makefile to generate more elegant source tarballs.
-  
-  [ Daniel Kahn Gillmor ]
-  * ensure that tempdirs are properly created, bail out otherwise instead
-    of stumbling ahead.
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Thu, 30 Oct 2008 15:03:23 -0400
-
-monkeysphere (0.19-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * simulating an X11 session in the test script.
-  * updated packaging so that symlinks to config files are correct.
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Wed, 29 Oct 2008 02:47:49 -0400
-
-monkeysphere (0.18-1) experimental; urgency=low
-
-  [ Jameson Graef Rollins ]
-  * Fix bugs in authorized_{user_ids,keys} file permission checking.
-  * Add new monkeysphere tmpdir to enable atomic moves of authorized_keys
-    files.
-  * chown authorized_keys files to `whoami`, for compatibility with test
-    suite.
-  * major improvements to test suite, added more tests.
-  
-  [ Daniel Kahn Gillmor ]
-  * update make install to ensure placement of
-    /etc/monkeysphere/gnupg-{host,authentication}.conf 
-  * choose either --quick-random or --debug-quick-random depending on
-    which gpg supports for the test suite.
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Wed, 29 Oct 2008 00:41:38 -0400
-
-monkeysphere (0.17-1) experimental; urgency=low
-
-  [ Jameson Graef Rollins ]  
-  * Fix some bugs in, and cleanup, authorized_keys file creation in
-    monkeysphere-server update-users.
-  * Move to using the empty string for not adding a user-controlled
-    authorized_keys file in the RAW_AUTHORIZED_KEYS variable.
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Tue, 28 Oct 2008 02:04:22 -0400
-
-monkeysphere (0.16-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * replaced "#!/bin/bash" with "#!/usr/bin/env bash" for better
-    portability.
-  * fixed busted lockfile arrangement, where empty file was being locked
-  * portability fixes in the way we use date, mktemp, hostname, su
-  * stop using /usr/bin/stat, since the syntax appears to be totally
-    unportable
-  * require GNU getopt, and test for getopt failures (look for getopt in
-    /usr/local/bin first, since that's where FreeBSD's GNU-compatible
-    getopt lives.
-  * monkeysphere-server diagnostics now counts problems and suggests a
-    re-run after they have been resolved.
-  * completed basic test suite: this can be run from the git sources or
-    the tarball with: cd tests && ./basic
-
-  [ Jameson Graef Rollins ]
-  * Genericize fs location variables.
-  * break out gpg.conf files into SYSCONFIGDIR, and not auto-generated at
-    install.
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Sun, 26 Oct 2008 03:06:18 -0400
-
-monkeysphere (0.15-1) experimental; urgency=low
-
-  * porting work and packaging simplification: clarifying makefiles,
-    pruning dependencies, etc.
-  * added tests to monkeysphere-server diagnostics
-  * moved monkeysphere(5) to section 7 of the manual
-  * now shipping TODO in /usr/share/doc/monkeysphere
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Thu, 04 Sep 2008 19:08:40 -0400
-
-monkeysphere (0.14-1) experimental; urgency=low
-
-  * changing debian packaging back to format 1.0 so we get automatic
-    tarballs, and easier inclusion in other build networks.
-  * no other source changes.
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Thu, 04 Sep 2008 13:03:35 -0400
-
-monkeysphere (0.13-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * tweaks in /usr/bin/monkeysphere to handle odd secret keyrings.
-  * updated makefile to reflect the package building technique we've been
-    using for a month now.
-
-  [ Jameson Graef Rollins ]
-  * move location of user config directory to ~/.monkeysphere.
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Wed, 03 Sep 2008 17:26:10 -0400
-
-monkeysphere (0.12-1) experimental; urgency=low
-
-  [ Jameson Graef Rollins ]
-  * Improved output handling.  New LOG_LEVEL variable.
-  
-  [ Daniel Kahn Gillmor ]
-  * debian/control: switched Homepage: and Vcs-Git: to canonicalized
-    upstream hostnames.
-  * updated documentation for new release.
-  * changed my associated e-mail address for this package.
-
- -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Tue, 02 Sep 2008 18:54:29 -0400
-
-monkeysphere (0.11-1) experimental; urgency=low
-
-  [ Jameson Graef Rollins ]
-  * fix bug in trustdb update on add/revoke-hostname.
-
-  [ Daniel Kahn Gillmor ]
-  * debian/control: added Build-Depends: git-core for the new packaging
-    format
-  * new subcommand: monkeysphere subkey-to-ssh-agent (relies on a patched
-    GnuTLS to deal with GPG's gnu-dummy S2K extension, but fails cleanly
-    if not found).
-  
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Wed, 20 Aug 2008 11:24:35 -0400
-
-monkeysphere (0.10-1) experimental; urgency=low
-
-  [ Jameson Graef Rollins ]
-  * brown paper bag release: invert test on calculated validity of keys.
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 18 Aug 2008 16:22:34 -0400
-
-monkeysphere (0.9-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * implemented "monkeysphere-server extend-key" to adjust expiration
-    date of host key.
-  * removed "monkeysphere-server fingerprint".  Use "monkeysphere-server
-    show-key" instead.
-  
-  [ Jameson Graef Rollins ]
-  * fixed bug in user id processing that prevented bad primary keys from
-    being properly removed.
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 18 Aug 2008 15:42:12 -0400
-
-monkeysphere (0.8-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * debian/control: switched Vcs-Git to use "centralized" git repo instead
-    of my own.
-  * More monkeysphere-server diagnostics
-  * monkeysphere --gen-subkey now guesses what KeyID you meant.
-  * added Recommends: ssh-askpass to ensure monkeysphere --gen-subkey
-    works sensibly under X11
-
-  [ Jameson Graef Rollins ]
-  * fix another bug when known_hosts files are missing.
-  * sort processed keys so that "good" keys are processed after "bad"
-    keys.  This will prevent malicious bad keys from causing good keys to
-    be removed from key files.
-  * enabled host key publication.
-  * added checking of gpg.conf for keyserver
-  * new functions to add/revoke host key user IDs
-  * improved list-certifiers function (now non-privileged)
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 18 Aug 2008 12:43:37 -0400
-
-monkeysphere (0.7-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * Added monkeysphere-server diagnostics subcommand.
-  * rebuilding package using Format: 3.0 (git)
-
-  [ Jameson Graef Rollins ]
-  * fix how check for file modification is done.
-  * rework out user id processing is done to provide more verbose log
-    output.
-  * fix bug in monkeysphpere update-authorized_keys subcommand where
-    disallowed keys failed to be remove from authorized_keys file.
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 04 Aug 2008 10:47:41 -0400
-
-monkeysphere (0.6-1) experimental; urgency=low
-  
-  [ Jameson Graef Rollins ]
-  * Fix bug in return on error of ssh-proxycommand.
-  
-  [ Daniel Kahn Gillmor ]
-  * try socat if netcat is not available in proxycommand.
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Tue, 29 Jul 2008 10:27:20 -0400
-
-monkeysphere (0.5-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * updated READMEs to match current state of code
-  
-  [ Jameson Graef Rollins ]
-  * Tweak how empty authorized_user_ids and known_hosts files are handled.
-  * Do not fail when authorized_user_ids or known_hosts file is not found.
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 28 Jul 2008 10:50:02 -0400
-
-monkeysphere (0.4-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * New version.
-  * Fixed return code error in openpgp2ssh
-
-  [ Jameson Graef Rollins ]
-  * Privilege separation: use monkeysphere user to handle maintenance of
-    the gnupg authentication keychain for server.
-  * Improved certifier key management.
-  * Fixed variable scoping and config file precedence.
-  * Add options for key generation and add-certifier functions.
-  * Fix return codes for known_host and authorized_keys updating
-    functions.
-  * Add write permission check on authorized_keys, known_hosts, and
-    authorized_user_ids files.
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Tue, 22 Jul 2008 21:50:17 -0400
-
-monkeysphere (0.3-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * new version.
-
-  [ Jameson Graef Rollins ]
-  * Move files in /var/cache/monkeysphere and GNUPGHOME for server to
-    the more appropriate /var/lib/monkeysphere.
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Tue, 24 Jun 2008 00:55:29 -0400
-
-monkeysphere (0.2-2) experimental; urgency=low
-
-  * added lockfile-progs dependency
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 23 Jun 2008 19:34:05 -0400
-
-monkeysphere (0.2-1) experimental; urgency=low
-
-  [ Daniel Kahn Gillmor ]
-  * openpgp2ssh now supports specifying keys by full fingerprint.
-
-  [ Jameson Graef Rollins ]
-  * Add AUTHORIZED_USER_IDS config variable for server, which defaults to
-    %h/.config/monkeysphere/authorized_user_ids, instead of
-    /etc/monkeysphere/authorized_user_ids.
-  * Remove {update,remove}-userids functions, since we decided they
-    weren't useful enough to be worth maintaining.
-  * Better handling of unknown users in server update-users
-  * Add file locking when modifying known_hosts or authorized_keys
-  * Better failure/prompting for gen-subkey
-  * Add ability to set any owner trust level for keys in server keychain.
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 23 Jun 2008 17:03:19 -0400
-
-monkeysphere (0.1-1) experimental; urgency=low
-
-  * First release of debian package for monkeysphere.
-  * This is experimental -- please report bugs!
-
- -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Thu, 19 Jun 2008 00:34:53 -0400
-
diff --git a/debian/compat b/debian/compat
deleted file mode 100644 (file)
index 7f8f011..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/debian/control b/debian/control
deleted file mode 100644 (file)
index ccc3ad2..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-Source: monkeysphere
-Section: net
-Priority: extra
-Maintainer: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-Uploaders: Jameson Graef Rollins <jrollins@finestructure.net>
-Build-Depends: debhelper (>= 7.0), libgnutls-dev (>= 2.4.0)
-Standards-Version: 3.8.0.1
-Homepage: http://web.monkeysphere.info/
-Vcs-Git: git://git.monkeysphere.info/monkeysphere
-Dm-Upload-Allowed: yes
-
-Package: monkeysphere
-Architecture: any
-Depends: openssh-client, gnupg, coreutils (>= 6) | base64, lockfile-progs | procfile, adduser, ${shlibs:Depends}
-Recommends: netcat | socat, ssh-askpass
-Enhances: openssh-client, openssh-server
-Description: use the OpenPGP web of trust to verify ssh connections
- SSH key-based authentication is tried-and-true, but it lacks a true
- Public Key Infrastructure for key certification, revocation and
- expiration.  Monkeysphere is a framework that uses the OpenPGP web of
- trust for these PKI functions.  It can be used in both directions:
- for users to get validated host keys, and for hosts to authenticate
- users.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644 (file)
index 4c25286..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?action=recall&rev=226
-Debianized-By: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-Debianized-Date: Fri Jun 13 10:19:16 EDT 2008
-Original-Source: http://web.monkeysphere.info/download
-
-Files: *
-Copyright:  Copyright 2008 Jameson Rollins <jrollins@fifthhorseman.net>,
- Daniel Kahn Gillmor <dkg@fifthhorseman.net>,
- Jamie McClelland <jamie@mayfirst.org>,
- Micah Anderson <micah@riseup.net>,
- Matthew Goins <mjgoins@openflows.com>,
- Mike Castleman <mlcastle@mlcastle.net>,
- Elliot Winard <enw@caveteen.com>,
- Ross Glover <ross@ross.mayfirst.org>,
- Greg Lyle <greg@stealthisemail.com>
-
-License: GPL-3+
- This package is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- .
- On Debian systems, the complete text of the GNU General Public License
- can be found in file "/usr/share/common-licenses/GPL".
diff --git a/debian/monkeysphere.dirs b/debian/monkeysphere.dirs
deleted file mode 100644 (file)
index 1f9e66b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-var/lib/monkeysphere
-var/lib/monkeysphere/authorized_keys
-var/lib/monkeysphere/tmp
-usr/bin
-usr/sbin
-usr/share
-usr/share/monkeysphere
-usr/share/man
-usr/share/man/man1
-usr/share/man/man7
-usr/share/man/man8
-etc/monkeysphere
diff --git a/debian/monkeysphere.postinst b/debian/monkeysphere.postinst
deleted file mode 100755 (executable)
index 02d6304..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh -e
-
-# postinst script for monkeysphere
-
-# Author: Jameson Rollins <jrollins@fifthhorseman.net>
-# Copyright 2008
-
-ETC="/etc/monkeysphere"
-VARLIB="/var/lib/monkeysphere"
-
-if ! getent passwd monkeysphere >/dev/null ; then
-    echo "adding monkeysphere user..."
-    adduser --quiet --system --no-create-home --group \
-       --home "$VARLIB" \
-       --shell '/bin/bash' \
-       --gecos 'monkeysphere authentication user,,,' \
-       monkeysphere
-fi
-
-# install host gnupg home directory
-install --owner root --group monkeysphere --mode 750 -d "$VARLIB"/gnupg-host
-# link in the gpg.conf
-ln -sTf "$ETC"/gnupg-host.conf "$VARLIB"/gnupg-host/gpg.conf
-
-# install authentication gnupg home directory
-install --owner monkeysphere --group monkeysphere --mode 700 -d "$VARLIB"/gnupg-authentication
-# link in the gpg.conf
-ln -sTf "$ETC"/gnupg-authentication.conf "$VARLIB"/gnupg-authentication/gpg.conf
diff --git a/debian/monkeysphere.postrm b/debian/monkeysphere.postrm
deleted file mode 100755 (executable)
index 8f87ed3..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh -e
-
-# postrm script for monkeysphere
-
-# Author: Jameson Rollins <jrollins@fifthhorseman.net>
-# Copyright 2008
-
-case $1 in
-    purge)
-        rmdir --ignore-fail-on-non-empty /var/lib/monkeysphere || true
-        echo "removing monkeysphere user..."
-        userdel monkeysphere > /dev/null || true
-        ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
diff --git a/debian/monkeysphere.preinst b/debian/monkeysphere.preinst
deleted file mode 100755 (executable)
index 860286b..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh -e
-
-# preinst script for monkeysphere
-
-# Author: Jameson Rollins <jrollins@fifthhorseman.net>
-# Copyright 2008
-
-ETC="/etc/monkeysphere"
-VARLIB="/var/lib/monkeysphere"
-
-# move the gpg.conf files from the GNUPGHOMEs if they're there to
-# /etc, where they will be linked back into the GNUPGHOMEs later
-if [ -f "$VARLIB"/gnupg-host/gpg.conf -a ! -L "$VARLIB"/gnupg-host/gpg.conf ] ; then
-    mv "$VARLIB"/gnupg-host/gpg.conf "$ETC"/gpg-host.conf
-    chown root:root "$ETC"/gpg-host.conf
-    ln -s "$ETC"/gpg-host.conf "$VARLIB"/gnupg-host/gpg.conf
-fi
-if [ -f "$VARLIB"/gnupg-authentication/gpg.conf -a ! -L "$VARLIB"/gnupg-authentication/gpg.conf ] ; then
-    mv "$VARLIB"/gnupg-authentication/gpg.conf "$ETC"/gpg-authentication.conf
-    chown root:root "$ETC"/gpg-authentication.conf
-    ln -s "$ETC"/gpg-authentication.conf "$VARLIB"/gnupg-authentication/gpg.conf
-fi
diff --git a/debian/rules b/debian/rules
deleted file mode 100755 (executable)
index cbe925d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/make -f
-%:
-       dh $@
index b528fd07f97d8672403eed54f034b6aa65c26b5d..30aa2b1b93f0ce99732045e05f26d33dc7848a13 100644 (file)
@@ -7,11 +7,18 @@
 *  changes to this system (first command at top, last at bottom)             *
 ******************************************************************************
 
+2009-01-30 - micah
+       * Replaced nullmailer with postfix, nullmailer doesn't handle aliases
+         and insisted either on constantly respooling mail when there was no
+         where to go. 
+
 2009-01-24 - micah
        * Configured /etc/aliases to have root go to mjgoins, micah, dkg, jrollins
        * Configured /etc/nullmailer/remotes to have mail.riseup.net so remote delivery will work
        * Removed the hundreds of queued cron emails that had resulted in 30gig of mail.err logs
        * Rotated the giant logs out 
+       * aptitude update && aptitude full-upgrade
+
        
 2008-10-29 - dkg
        * aptitude update && aptitude full-upgrade
diff --git a/doc/zimmerman/changelog b/doc/zimmerman/changelog
new file mode 100644 (file)
index 0000000..a92557d
--- /dev/null
@@ -0,0 +1,28 @@
+******************************************************************************
+*                                                                            *
+*                       zimmerman system log                                 *
+*                                                                            *
+******************************************************************************
+*  Please add new entries in reverse chronological order whenever you make   *
+*  changes to this system (first command at top, last at bottom)             *
+******************************************************************************
+
+2008-11-17 - micah
+       * verified the SHA256 values for the key material
+       * /usr/lib/sks/sks_build.sh (chose option #2: normalbuild)
+       * chown -R debian-sks:debian-sks /var/lib/sks
+       * edit /etc/default/sks to enable the initscript
+       * /etc/init.d/sks start
+       * rm -rf /var/lib/sks/dump
+       
+2008-11-15 - micah
+       * aptitude update && aptitude full-upgrade
+       * aptitude install sks
+       * cd /var/lib/sks/dump ; wget -q -r -np -nd -A bz2,SHA256,asc \
+         http://nynex.net/keydump/ -e robots=off
+       * install monkeysphere 0.21-2 package
+       * apt-get install bzip2 ; bunzip2 /var/lib/sks/dump/*.bz2
+
+2008-11-15 - jamie
+  * aptitude install esmtp-run mailx
+       * edited /etc/esmtp-run, configured to relay to bulk.mayfirst.org
diff --git a/packaging/debian/changelog b/packaging/debian/changelog
new file mode 100644 (file)
index 0000000..39e4b33
--- /dev/null
@@ -0,0 +1,304 @@
+monkeysphere (0.22~pre-1) UNRELEASED; urgency=low
+
+  * New upstream release:
+  [ Jameson Rollins ]
+
+    - added info log output when a new key is added to known_hosts file.
+    - added some useful output to the ssh-proxycommand for "marginal"
+      cases where keys are found for host but do not have full validity.
+    - force ssh-keygen to read from stdin to get ssh key fingerprint.
+
+  [ Daniel Kahn Gillmor ]
+
+    - automatically output two copies of the host's public key: one
+    standard ssh public key file, and the other a minimal OpenPGP key with
+    just the latest valid self-sig.
+
+ -- Jameson Graef Rollins <jrollins@finestructure.net>  Mon, 17 Nov 2008 18:15:43 -0500
+
+monkeysphere (0.21-2) unstable; urgency=low
+
+  * actually rmdir /var/lib/monkeysphere-* during prerm if possible.
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Sat, 15 Nov 2008 16:36:57 -0500
+
+monkeysphere (0.21-1) unstable; urgency=low
+
+  * New upstream release:
+    - move debian packaging to packaging subdirectory.
+  * Add debian prerm script, and add debhelper lines to other install
+    scripts.
+  * Initial release to Debian (Closes: #505806)
+
+ -- Jameson Graef Rollins <jrollins@finestructure.net>  Sat, 15 Nov 2008 16:14:27 -0500
+
+monkeysphere (0.20-1) unstable; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * ensure that tempdirs are properly created, bail out otherwise instead
+    of stumbling ahead.
+  * minor fussing with the test script to make it cleaner.
+
+  [ Jameson Graef Rollins ]
+  * clean up Makefile to generate more elegant source tarballs.
+  * make myself the maintainer.
+
+ -- Jameson Graef Rollins <jrollins@finestructure.net>  Sat, 15 Nov 2008 13:12:57 -0500
+
+monkeysphere (0.19-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * simulating an X11 session in the test script.
+  * updated packaging so that symlinks to config files are correct.
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Wed, 29 Oct 2008 02:47:49 -0400
+
+monkeysphere (0.18-1) experimental; urgency=low
+
+  [ Jameson Graef Rollins ]
+  * Fix bugs in authorized_{user_ids,keys} file permission checking.
+  * Add new monkeysphere tmpdir to enable atomic moves of authorized_keys
+    files.
+  * chown authorized_keys files to `whoami`, for compatibility with test
+    suite.
+  * major improvements to test suite, added more tests.
+  
+  [ Daniel Kahn Gillmor ]
+  * update make install to ensure placement of
+    /etc/monkeysphere/gnupg-{host,authentication}.conf 
+  * choose either --quick-random or --debug-quick-random depending on
+    which gpg supports for the test suite.
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Wed, 29 Oct 2008 00:41:38 -0400
+
+monkeysphere (0.17-1) experimental; urgency=low
+
+  [ Jameson Graef Rollins ]  
+  * Fix some bugs in, and cleanup, authorized_keys file creation in
+    monkeysphere-server update-users.
+  * Move to using the empty string for not adding a user-controlled
+    authorized_keys file in the RAW_AUTHORIZED_KEYS variable.
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Tue, 28 Oct 2008 02:04:22 -0400
+
+monkeysphere (0.16-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * replaced "#!/bin/bash" with "#!/usr/bin/env bash" for better
+    portability.
+  * fixed busted lockfile arrangement, where empty file was being locked
+  * portability fixes in the way we use date, mktemp, hostname, su
+  * stop using /usr/bin/stat, since the syntax appears to be totally
+    unportable
+  * require GNU getopt, and test for getopt failures (look for getopt in
+    /usr/local/bin first, since that's where FreeBSD's GNU-compatible
+    getopt lives.
+  * monkeysphere-server diagnostics now counts problems and suggests a
+    re-run after they have been resolved.
+  * completed basic test suite: this can be run from the git sources or
+    the tarball with: cd tests && ./basic
+
+  [ Jameson Graef Rollins ]
+  * Genericize fs location variables.
+  * break out gpg.conf files into SYSCONFIGDIR, and not auto-generated at
+    install.
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Sun, 26 Oct 2008 03:06:18 -0400
+
+monkeysphere (0.15-1) experimental; urgency=low
+
+  * porting work and packaging simplification: clarifying makefiles,
+    pruning dependencies, etc.
+  * added tests to monkeysphere-server diagnostics
+  * moved monkeysphere(5) to section 7 of the manual
+  * now shipping TODO in /usr/share/doc/monkeysphere
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Thu, 04 Sep 2008 19:08:40 -0400
+
+monkeysphere (0.14-1) experimental; urgency=low
+
+  * changing debian packaging back to format 1.0 so we get automatic
+    tarballs, and easier inclusion in other build networks.
+  * no other source changes.
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Thu, 04 Sep 2008 13:03:35 -0400
+
+monkeysphere (0.13-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * tweaks in /usr/bin/monkeysphere to handle odd secret keyrings.
+  * updated makefile to reflect the package building technique we've been
+    using for a month now.
+
+  [ Jameson Graef Rollins ]
+  * move location of user config directory to ~/.monkeysphere.
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Wed, 03 Sep 2008 17:26:10 -0400
+
+monkeysphere (0.12-1) experimental; urgency=low
+
+  [ Jameson Graef Rollins ]
+  * Improved output handling.  New LOG_LEVEL variable.
+  
+  [ Daniel Kahn Gillmor ]
+  * debian/control: switched Homepage: and Vcs-Git: to canonicalized
+    upstream hostnames.
+  * updated documentation for new release.
+  * changed my associated e-mail address for this package.
+
+ -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Tue, 02 Sep 2008 18:54:29 -0400
+
+monkeysphere (0.11-1) experimental; urgency=low
+
+  [ Jameson Graef Rollins ]
+  * fix bug in trustdb update on add/revoke-hostname.
+
+  [ Daniel Kahn Gillmor ]
+  * debian/control: added Build-Depends: git-core for the new packaging
+    format
+  * new subcommand: monkeysphere subkey-to-ssh-agent (relies on a patched
+    GnuTLS to deal with GPG's gnu-dummy S2K extension, but fails cleanly
+    if not found).
+  
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Wed, 20 Aug 2008 11:24:35 -0400
+
+monkeysphere (0.10-1) experimental; urgency=low
+
+  [ Jameson Graef Rollins ]
+  * brown paper bag release: invert test on calculated validity of keys.
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 18 Aug 2008 16:22:34 -0400
+
+monkeysphere (0.9-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * implemented "monkeysphere-server extend-key" to adjust expiration
+    date of host key.
+  * removed "monkeysphere-server fingerprint".  Use "monkeysphere-server
+    show-key" instead.
+  
+  [ Jameson Graef Rollins ]
+  * fixed bug in user id processing that prevented bad primary keys from
+    being properly removed.
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 18 Aug 2008 15:42:12 -0400
+
+monkeysphere (0.8-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * debian/control: switched Vcs-Git to use "centralized" git repo instead
+    of my own.
+  * More monkeysphere-server diagnostics
+  * monkeysphere --gen-subkey now guesses what KeyID you meant.
+  * added Recommends: ssh-askpass to ensure monkeysphere --gen-subkey
+    works sensibly under X11
+
+  [ Jameson Graef Rollins ]
+  * fix another bug when known_hosts files are missing.
+  * sort processed keys so that "good" keys are processed after "bad"
+    keys.  This will prevent malicious bad keys from causing good keys to
+    be removed from key files.
+  * enabled host key publication.
+  * added checking of gpg.conf for keyserver
+  * new functions to add/revoke host key user IDs
+  * improved list-certifiers function (now non-privileged)
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 18 Aug 2008 12:43:37 -0400
+
+monkeysphere (0.7-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * Added monkeysphere-server diagnostics subcommand.
+  * rebuilding package using Format: 3.0 (git)
+
+  [ Jameson Graef Rollins ]
+  * fix how check for file modification is done.
+  * rework out user id processing is done to provide more verbose log
+    output.
+  * fix bug in monkeysphpere update-authorized_keys subcommand where
+    disallowed keys failed to be remove from authorized_keys file.
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 04 Aug 2008 10:47:41 -0400
+
+monkeysphere (0.6-1) experimental; urgency=low
+  
+  [ Jameson Graef Rollins ]
+  * Fix bug in return on error of ssh-proxycommand.
+  
+  [ Daniel Kahn Gillmor ]
+  * try socat if netcat is not available in proxycommand.
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Tue, 29 Jul 2008 10:27:20 -0400
+
+monkeysphere (0.5-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * updated READMEs to match current state of code
+  
+  [ Jameson Graef Rollins ]
+  * Tweak how empty authorized_user_ids and known_hosts files are handled.
+  * Do not fail when authorized_user_ids or known_hosts file is not found.
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 28 Jul 2008 10:50:02 -0400
+
+monkeysphere (0.4-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * New version.
+  * Fixed return code error in openpgp2ssh
+
+  [ Jameson Graef Rollins ]
+  * Privilege separation: use monkeysphere user to handle maintenance of
+    the gnupg authentication keychain for server.
+  * Improved certifier key management.
+  * Fixed variable scoping and config file precedence.
+  * Add options for key generation and add-certifier functions.
+  * Fix return codes for known_host and authorized_keys updating
+    functions.
+  * Add write permission check on authorized_keys, known_hosts, and
+    authorized_user_ids files.
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Tue, 22 Jul 2008 21:50:17 -0400
+
+monkeysphere (0.3-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * new version.
+
+  [ Jameson Graef Rollins ]
+  * Move files in /var/cache/monkeysphere and GNUPGHOME for server to
+    the more appropriate /var/lib/monkeysphere.
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Tue, 24 Jun 2008 00:55:29 -0400
+
+monkeysphere (0.2-2) experimental; urgency=low
+
+  * added lockfile-progs dependency
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 23 Jun 2008 19:34:05 -0400
+
+monkeysphere (0.2-1) experimental; urgency=low
+
+  [ Daniel Kahn Gillmor ]
+  * openpgp2ssh now supports specifying keys by full fingerprint.
+
+  [ Jameson Graef Rollins ]
+  * Add AUTHORIZED_USER_IDS config variable for server, which defaults to
+    %h/.config/monkeysphere/authorized_user_ids, instead of
+    /etc/monkeysphere/authorized_user_ids.
+  * Remove {update,remove}-userids functions, since we decided they
+    weren't useful enough to be worth maintaining.
+  * Better handling of unknown users in server update-users
+  * Add file locking when modifying known_hosts or authorized_keys
+  * Better failure/prompting for gen-subkey
+  * Add ability to set any owner trust level for keys in server keychain.
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Mon, 23 Jun 2008 17:03:19 -0400
+
+monkeysphere (0.1-1) experimental; urgency=low
+
+  * First release of debian package for monkeysphere.
+  * This is experimental -- please report bugs!
+
+ -- Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>  Thu, 19 Jun 2008 00:34:53 -0400
+
diff --git a/packaging/debian/compat b/packaging/debian/compat
new file mode 100644 (file)
index 0000000..7f8f011
--- /dev/null
@@ -0,0 +1 @@
+7
diff --git a/packaging/debian/control b/packaging/debian/control
new file mode 100644 (file)
index 0000000..4c836b4
--- /dev/null
@@ -0,0 +1,23 @@
+Source: monkeysphere
+Section: net
+Priority: extra
+Maintainer: Jameson Graef Rollins <jrollins@finestructure.net>
+Uploaders: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Build-Depends: debhelper (>= 7.0), libgnutls-dev (>= 2.4.0)
+Standards-Version: 3.8.0.1
+Homepage: http://web.monkeysphere.info/
+Vcs-Git: git://git.monkeysphere.info/monkeysphere
+Dm-Upload-Allowed: yes
+
+Package: monkeysphere
+Architecture: any
+Depends: openssh-client, gnupg, coreutils (>= 6) | base64, lockfile-progs | procfile, adduser, ${shlibs:Depends}
+Recommends: netcat | socat, ssh-askpass
+Enhances: openssh-client, openssh-server
+Description: use the OpenPGP web of trust to verify ssh connections
+ SSH key-based authentication is tried-and-true, but it lacks a true
+ Public Key Infrastructure for key certification, revocation and
+ expiration.  Monkeysphere is a framework that uses the OpenPGP web of
+ trust for these PKI functions.  It can be used in both directions:
+ for users to get validated host keys, and for hosts to authenticate
+ users.
diff --git a/packaging/debian/copyright b/packaging/debian/copyright
new file mode 100644 (file)
index 0000000..4c25286
--- /dev/null
@@ -0,0 +1,24 @@
+Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?action=recall&rev=226
+Debianized-By: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Debianized-Date: Fri Jun 13 10:19:16 EDT 2008
+Original-Source: http://web.monkeysphere.info/download
+
+Files: *
+Copyright:  Copyright 2008 Jameson Rollins <jrollins@fifthhorseman.net>,
+ Daniel Kahn Gillmor <dkg@fifthhorseman.net>,
+ Jamie McClelland <jamie@mayfirst.org>,
+ Micah Anderson <micah@riseup.net>,
+ Matthew Goins <mjgoins@openflows.com>,
+ Mike Castleman <mlcastle@mlcastle.net>,
+ Elliot Winard <enw@caveteen.com>,
+ Ross Glover <ross@ross.mayfirst.org>,
+ Greg Lyle <greg@stealthisemail.com>
+
+License: GPL-3+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ can be found in file "/usr/share/common-licenses/GPL".
diff --git a/packaging/debian/monkeysphere.dirs b/packaging/debian/monkeysphere.dirs
new file mode 100644 (file)
index 0000000..1f9e66b
--- /dev/null
@@ -0,0 +1,12 @@
+var/lib/monkeysphere
+var/lib/monkeysphere/authorized_keys
+var/lib/monkeysphere/tmp
+usr/bin
+usr/sbin
+usr/share
+usr/share/monkeysphere
+usr/share/man
+usr/share/man/man1
+usr/share/man/man7
+usr/share/man/man8
+etc/monkeysphere
diff --git a/packaging/debian/monkeysphere.postinst b/packaging/debian/monkeysphere.postinst
new file mode 100755 (executable)
index 0000000..8f1fe77
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh -e
+
+# postinst script for monkeysphere
+
+# Author: Jameson Rollins <jrollins@fifthhorseman.net>
+# Copyright 2008
+
+ETC="/etc/monkeysphere"
+VARLIB="/var/lib/monkeysphere"
+
+if ! getent passwd monkeysphere >/dev/null ; then
+    echo "adding monkeysphere user..."
+    adduser --quiet --system --no-create-home --group \
+       --home "$VARLIB" \
+       --shell '/bin/bash' \
+       --gecos 'monkeysphere authentication user,,,' \
+       monkeysphere
+fi
+
+# install host gnupg home directory
+install --owner root --group monkeysphere --mode 750 -d "$VARLIB"/gnupg-host
+# link in the gpg.conf
+ln -sTf "$ETC"/gnupg-host.conf "$VARLIB"/gnupg-host/gpg.conf
+
+# install authentication gnupg home directory
+install --owner monkeysphere --group monkeysphere --mode 700 -d "$VARLIB"/gnupg-authentication
+# link in the gpg.conf
+ln -sTf "$ETC"/gnupg-authentication.conf "$VARLIB"/gnupg-authentication/gpg.conf
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/packaging/debian/monkeysphere.postrm b/packaging/debian/monkeysphere.postrm
new file mode 100755 (executable)
index 0000000..7c0fede
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh -e
+
+# postrm script for monkeysphere
+
+# Author: Jameson Rollins <jrollins@fifthhorseman.net>
+# Copyright 2008
+
+case $1 in
+    purge)
+        echo "removing monkeysphere user..."
+        userdel monkeysphere > /dev/null || true
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/packaging/debian/monkeysphere.preinst b/packaging/debian/monkeysphere.preinst
new file mode 100755 (executable)
index 0000000..528da84
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh -e
+
+# preinst script for monkeysphere
+
+# Author: Jameson Rollins <jrollins@fifthhorseman.net>
+# Copyright 2008
+
+ETC="/etc/monkeysphere"
+VARLIB="/var/lib/monkeysphere"
+
+# move the gpg.conf files from the GNUPGHOMEs if they're there to
+# /etc, where they will be linked back into the GNUPGHOMEs later
+if [ -f "$VARLIB"/gnupg-host/gpg.conf -a ! -L "$VARLIB"/gnupg-host/gpg.conf ] ; then
+    mv "$VARLIB"/gnupg-host/gpg.conf "$ETC"/gpg-host.conf
+    chown root:root "$ETC"/gpg-host.conf
+    ln -s "$ETC"/gpg-host.conf "$VARLIB"/gnupg-host/gpg.conf
+fi
+if [ -f "$VARLIB"/gnupg-authentication/gpg.conf -a ! -L "$VARLIB"/gnupg-authentication/gpg.conf ] ; then
+    mv "$VARLIB"/gnupg-authentication/gpg.conf "$ETC"/gpg-authentication.conf
+    chown root:root "$ETC"/gpg-authentication.conf
+    ln -s "$ETC"/gpg-authentication.conf "$VARLIB"/gnupg-authentication/gpg.conf
+fi
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/packaging/debian/monkeysphere.prerm b/packaging/debian/monkeysphere.prerm
new file mode 100755 (executable)
index 0000000..00523a1
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh -e
+
+# prerm script for monkeysphere
+
+# Author: Jameson Rollins <jrollins@fifthhorseman.net>
+# Copyright 2008
+
+VARLIB="/var/lib/monkeysphere"
+
+rm -f "$VARLIB"/gnupg-host/gpg.conf
+rm -f "$VARLIB"/gnupg-authentication/gpg.conf
+rmdir --ignore-fail-on-non-empty "$VARLIB"/gnupg-host
+rmdir --ignore-fail-on-non-empty "$VARLIB"/gnupg-authentication
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/packaging/debian/rules b/packaging/debian/rules
new file mode 100755 (executable)
index 0000000..cbe925d
--- /dev/null
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+%:
+       dh $@
index 04a704a64cdcd5dbd0a648f56293265228135f43..9d9d40a35e7ceb82a45fdb6fc66957d1e38aa88d 100644 (file)
@@ -13,6 +13,12 @@ etc/monkeysphere/monkeysphere.conf.sample
 @unexec if cmp -s %D/etc/monkeysphere/monkeysphere-server.conf.sample %D/etc/monkeysphere/monkeysphere-server.conf; then rm -f %D/etc/monkeysphere/monkeysphere-server.conf; fi
 etc/monkeysphere/monkeysphere-server.conf.sample
 @exec if [ ! -f %D/etc/monkeysphere/monkeysphere-server.conf ] ; then cp -p %D/%F %B/monkeysphere-server.conf; fi
+@unexec if cmp -s %D/etc/monkeysphere/gnupg-host.conf.sample %D/etc/monkeysphere/gnupg-host.conf; then rm -f %D/etc/monkeysphere/gnupg-host.conf; fi
+etc/monkeysphere/gnupg-host.conf.sample
+@exec if [ ! -f %D/etc/monkeysphere/gnupg-host.conf ] ; then cp -p %D/%F %B/gnupg-host.conf; fi
+@unexec if cmp -s %D/etc/monkeysphere/gnupg-authentication.conf.sample %D/etc/monkeysphere/gnupg-authentication.conf; then rm -f %D/etc/monkeysphere/gnupg-authentication.conf; fi
+etc/monkeysphere/gnupg-authentication.conf.sample
+@exec if [ ! -f %D/etc/monkeysphere/gnupg-authentication.conf ] ; then cp -p %D/%F %B/gnupg-authentication.conf; fi
 @dirrm share/doc/monkeysphere
 @dirrm share/monkeysphere
 @dirrm etc/monkeysphere
index 297e7f344c9d39686c94c1097ee587a142e51455..51b04708e1e34ca13dbc4d9d4d0a591211200c4d 100644 (file)
@@ -639,7 +639,7 @@ process_user_id() {
                ;;
            'uid') # user ids
                if [ "$lastKey" != pub ] ; then
-                   log verbose " - got a user ID after a sub key?!  user IDs should only follow primary keys!"
+                   log verbose " ! got a user ID after a sub key?!  user IDs should only follow primary keys!"
                    continue
                fi
                # if an acceptable user ID was already found, skip
@@ -652,6 +652,8 @@ process_user_id() {
                    if [ "$validity" = 'u' -o "$validity" = 'f' ] ; then
                        # mark user ID acceptable
                        uidOK=true
+                   else
+                       log debug "  - unacceptable user ID validity ($validity)."
                    fi
                else
                    continue
@@ -693,10 +695,12 @@ process_user_id() {
                
                # if sub key validity is not ok, skip
                if [ "$validity" != 'u' -a "$validity" != 'f' ] ; then
+                   log debug "  - unacceptable sub key validity ($validity)."
                    continue
                fi
                # if sub key capability is not ok, skip
                if ! check_capability "$usage" $requiredCapability ; then
+                   log debug "  - unacceptable sub key capability ($usage)."
                    continue
                fi
 
@@ -742,6 +746,7 @@ process_user_id() {
 process_host_known_hosts() {
     local host
     local userID
+    local noKey=
     local nKeys
     local nKeysOK
     local ok
@@ -768,8 +773,9 @@ process_host_known_hosts() {
             continue
         fi
 
-       # remove the old host key line, and note if removed
-       remove_line "$KNOWN_HOSTS" "$sshKey"
+       # remove any old host key line, and note if removed nothing is
+       # removed
+       remove_line "$KNOWN_HOSTS" "$sshKey" || noKey=true
 
        # if key OK, add new host line
        if [ "$ok" -eq '0' ] ; then
@@ -788,6 +794,11 @@ process_host_known_hosts() {
            else
                ssh2known_hosts "$host" "$sshKey" >> "$KNOWN_HOSTS"
            fi
+
+           # log if this is a new key to the known_hosts file
+           if [ "$noKey" ] ; then
+               log info "* new key for $host added to known_hosts file."
+           fi
        fi
     done
 
index e78903b8e1d6cce2725e7c04a881cff3ae027a79..a1844eeeba6af74cfe129836e7744d477ef54940 100755 (executable)
@@ -132,13 +132,13 @@ show_server_key() {
     fingerprint=$(fingerprint_server_key)
     gpg_authentication "--fingerprint --list-key --list-options show-unusable-uids $fingerprint"
 
-    # dumping to a file named ' ' so that the ssh-keygen output
-    # doesn't claim any potentially bogus hostname(s):
-    tmpkey=$(mktemp -d ${TMPDIR:-/tmp}/tmp.XXXXXXXXXX) || failure "Could not create temporary directory!"
-    gpg_authentication "--export $fingerprint" | openpgp2ssh "$fingerprint" 2>/dev/null > "$tmpkey/ "
+    # do some crazy "Here Strings" redirection to get the key to
+    # ssh-keygen, since it doesn't read from stdin cleanly
     echo -n "ssh fingerprint: "
-    (cd "$tmpkey" && ssh-keygen -l -f ' ' | awk '{ print $2 }')
-    rm -rf "$tmpkey"
+    ssh-keygen -l -f /dev/stdin \
+       <<<$(gpg_authentication "--export $fingerprint" | \
+       openpgp2ssh "$fingerprint" 2>/dev/null) | \
+       awk '{ print $1, $2, $4 }'
     echo -n "OpenPGP fingerprint: "
     echo "$fingerprint"
 }
@@ -399,7 +399,11 @@ EOF
     (umask 077 && \
        gpg_host --export-secret-key "$fingerprint" | \
        openpgp2ssh "$fingerprint" > "${SYSDATADIR}/ssh_host_rsa_key")
-    log info "private SSH host key output to file: ${SYSDATADIR}/ssh_host_rsa_key"
+    log info "SSH host private key output to file: ${SYSDATADIR}/ssh_host_rsa_key"
+    ssh-keygen -y -f "${SYSDATADIR}/ssh_host_rsa_key" > "${SYSDATADIR}/ssh_host_rsa_key.pub"
+    log info "SSH host public key output to file: ${SYSDATADIR}/ssh_host_rsa_key.pub"
+    gpg_authentication "--export-options export-minimal --armor --export 0x${fingerprint}\!" > "${SYSDATADIR}/ssh_host_rsa_key.pub.gpg"
+    log info "SSH host public key in OpenPGP form: ${SYSDATADIR}/ssh_host_rsa_key.pub.gpg"
 }
 
 # extend the lifetime of a host key:
index 62760929e1861112c3e17c1bf6ea1af9b1cdffc4..a6091994f80dd0e8eef06dfdb1fb2b244656cdfe 100755 (executable)
 # established.  Can be added to ~/.ssh/config as follows:
 #  ProxyCommand monkeysphere-ssh-proxycommand %h %p
 
+########################################################################
+PGRM=$(basename $0)
+
+SYSSHAREDIR=${MONKEYSPHERE_SYSSHAREDIR:-"/usr/share/monkeysphere"}
+export SYSSHAREDIR
+. "${SYSSHAREDIR}/common" || exit 1
+
+########################################################################
+# FUNCTIONS
 ########################################################################
 
 usage() {
-cat <<EOF >&2
+    cat <<EOF >&2
 usage: ssh -o ProxyCommand="$(basename $0) %h %p" ...
 EOF
 }
 
+log() {
+    echo "$@" >&2
+}
+
+output_no_valid_key() {
+    local sshKeyOffered
+    local userID
+    local type
+    local validity
+    local keyid
+    local uidfpr
+    local usage
+    local sshKeyGPG
+    local tmpkey
+    local sshFingerprint
+    local gpgSigOut
+
+    userID="ssh://${HOSTP}"
+
+    log "-------------------- Monkeysphere warning -------------------"
+    log "Monkeysphere found OpenPGP keys for this hostname, but none had full validity."
+
+    # retrieve the actual ssh key
+    sshKeyOffered=$(ssh-keyscan -t rsa -p "$PORT" "$HOST" 2>/dev/null | awk '{ print $2, $3 }')
+    # FIXME: should we do any checks for failed keyscans, eg. host not
+    # found?
+
+    # get the gpg info for userid
+    gpgOut=$(gpg --list-key --fixed-list-mode --with-colon \
+       --with-fingerprint --with-fingerprint \
+       ="$userID" 2>/dev/null)
+
+    # find all 'pub' and 'sub' lines in the gpg output, which each
+    # represent a retrieved key for the user ID
+    echo "$gpgOut" | cut -d: -f1,2,5,10,12 | \
+    while IFS=: read -r type validity keyid uidfpr usage ; do
+       case $type in
+           'pub'|'sub')
+               # get the ssh key of the gpg key
+               sshKeyGPG=$(gpg2ssh "$keyid")
+
+               # if one of keys found matches the one offered by the
+               # host, then output info
+               if [ "$sshKeyGPG" = "$sshKeyOffered" ] ; then
+                   log "An OpenPGP key matching the ssh key offered by the host was found:"
+                   log
+
+                   # do some crazy "Here Strings" redirection to get the key to
+                   # ssh-keygen, since it doesn't read from stdin cleanly
+                   sshFingerprint=$(ssh-keygen -l -f /dev/stdin \
+                       <<<$(echo "$sshKeyGPG") | \
+                       awk '{ print $2 }')
+
+                   # get the sigs for the matching key
+                   gpgSigOut=$(gpg --check-sigs \
+                       --list-options show-uid-validity \
+                       "$keyid")
+
+                   # output the sigs, but only those on the user ID
+                   # we are looking for
+                   echo "$gpgSigOut" | awk '
+{
+if (match($0,"^pub")) {        print; }
+if (match($0,"^uid")) { ok=0; }
+if (match($0,"^uid.*'$userID'$")) { ok=1; print; }
+if (ok) { if (match($0,"^sig")) { print; } }
+}
+' >&2
+                   log
+
+                   # output the other user IDs for reference
+                   if (echo "$gpgSigOut" | grep "^uid" | grep -v -q "$userID") ; then
+                       log "Other user IDs on this key:"
+                       echo "$gpgSigOut" | grep "^uid" | grep -v "$userID" >&2
+                       log
+                   fi
+
+                   # output ssh fingerprint
+                   log "RSA key fingerprint is ${sshFingerprint}."
+
+                   # this whole process is in a "while read"
+                   # subshell.  the only way to get information out
+                   # of the subshell is to change the return code.
+                   # therefore we return 1 here to indicate that a
+                   # matching gpg key was found for the ssh key
+                   # offered by the host
+                   return 1
+               fi
+               ;;
+       esac
+    done
+
+    # if no key match was made (and the "while read" subshell returned
+    # 1) output how many keys were found
+    if (($? != 1)) ; then
+       log "None of the found keys matched the key offered by the host."
+       log "Run the following command for more info about the found keys:"
+       log "gpg --check-sigs --list-options show-uid-validity =${userID}"
+       # FIXME: should we do anything extra here if the retrieved
+       # host key is actually in the known_hosts file and the ssh
+       # connection will succeed?  Should the user be warned?
+       # prompted?
+    fi
+
+    log "-------------------- ssh continues below --------------------"
+}
+
 ########################################################################
 
 # export the monkeysphere log level
@@ -35,7 +151,7 @@ HOST="$1"
 PORT="$2"
 
 if [ -z "$HOST" ] ; then
-    echo "Host not specified." >&2
+    log "Host not specified."
     usage
     exit 255
 fi
@@ -88,6 +204,39 @@ export MONKEYSPHERE_CHECK_KEYSERVER
 # update the known_hosts file for the host
 monkeysphere update-known_hosts "$HOSTP"
 
+# output on depending on the return of the update-known_hosts
+# subcommand, which is (ultimately) the return code of the
+# update_known_hosts function in common
+case $? in
+    0)
+       # acceptable host key found so continue to ssh
+       true
+       ;;
+    1)
+       # no hosts at all found so also continue (drop through to
+       # regular ssh host verification)
+       true
+       ;;
+    2)
+       # at least one *bad* host key (and no good host keys) was
+       # found, so output some usefull information
+       output_no_valid_key
+       ;;
+    *)
+       # anything else drop through
+       true
+       ;;
+esac
+
+# FIXME: what about the case where monkeysphere successfully finds a
+# valid key for the host and adds it to the known_hosts file, but a
+# different non-monkeysphere key for the host already exists in the
+# known_hosts, and it is this non-ms key that is offered by the host?
+# monkeysphere will succeed, and the ssh connection will succeed, and
+# the user will be left with the impression that they are dealing with
+# a OpenPGP/PKI host key when in fact they are not.  should we use
+# ssh-keyscan to compare the keys first?
+
 # exec a netcat passthrough to host for the ssh connection
 if [ -z "$NO_CONNECT" ] ; then
     if (which nc 2>/dev/null >/dev/null); then
index 289a1b79997928c8b2edf8198bbd64c65e981856..5ba7a250b948affc504378ee09f2dce4ba79d76f 100755 (executable)
 
 # all subcommands in this script should complete without failure:
 set -e
+# piped commands should return the code of the first non-zero return
+set -o pipefail
 
 ## make sure that the right tools are installed to run the test.  the
 ## test has *more* requirements than plain ol' monkeysphere:
-
 which socat || { echo "You must have socat installed to run this test." ; exit 1; }
 
 ## FIXME: other checks?
@@ -53,6 +54,7 @@ ssh_test() {
 
     # kill the sshd process if it's still running
     kill "$SSHD_PID"
+    SSHD_PID=
 
     set -e
 
@@ -86,9 +88,16 @@ cleanup() {
     echo "### removing temp dir..."
     rm -rf "$TEMPDIR"
 
+    if [ "$SSHD_PID" ] ; then
+       echo "### killing off lingering sshd..."
+       kill "$SSHD_PID"
+    fi
+
     wait
 }
 
+SSHD_PID=
+
 ## setup trap
 trap failed_cleanup EXIT
 
@@ -120,7 +129,6 @@ export MONKEYSPHERE_LOG_LEVEL=DEBUG
 
 export SSHD_CONFIG="$TEMPDIR"/sshd_config
 export SOCKET="$TEMPDIR"/ssh-socket
-export SSHD_PID=
 
 # Make sure $DISPLAY is set to convince ssh and monkeysphere to fall
 # back on $SSH_ASKPASS.  Make sure it's not set to the current actual
index a333ba7cb8d1ecb65c9dbd7038d6742d36415a64..53fcd694e60d9131e0a1d8f1472edcab32e2aeda 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-VERSION=`head -n1 debian/changelog | sed 's/.*(\([^-]*\)-.*/\1/'`
+VERSION=`head -n1 packaging/debian/changelog | sed 's/.*(\([^-]*\)-.*/\1/'`
 
 {
 echo "MD5 (monkeysphere_${VERSION}.orig.tar.gz) =" $(md5sum "monkeysphere_${VERSION}.orig.tar.gz" | cut -f1 -d\ )
index f7561da43c622ac544bd27485932c85cad8d974a..b25a87c2c4cf9e7dc5f6e0122e91cc05f1f014be 100755 (executable)
@@ -1,10 +1,10 @@
 #!/bin/bash
 
-VERSION=`head -n1 debian/changelog | sed 's/.*(\([^)]*\)).*/\1/'`
+VERSION=`head -n1 packaging/debian/changelog | sed 's/.*(\([^)]*\)).*/\1/'`
 
 { 
     sed "s/__VERSION__/$VERSION/g" < utils/releasenote.header
-    head -n$(( $(grep -n '^ --' debian/changelog  | head -n1 | cut -f1 -d:) - 2 )) debian/changelog | tail -n+3
+    head -n$(( $(grep -n '^ --' packaging/debian/changelog  | head -n1 | cut -f1 -d:) - 2 )) packaging/debian/changelog | tail -n+3
     sed "s/__VERSION__/$VERSION/g" < utils/releasenote.footer
 } > "website/news/release-$VERSION.mdwn"
 
diff --git a/website/bugs/useful_information.mdwn b/website/bugs/useful_information.mdwn
new file mode 100644 (file)
index 0000000..025d678
--- /dev/null
@@ -0,0 +1,50 @@
+I would like to know, at INFO (default) log level, when the 
+monkeyspehere makes a "real" modification to my known\_hosts file; that 
+is, when it adds or deletes a key.
+
+Apparently this is hard because monkeysphere is currently configured to 
+delete all keys and then add good keys, so a key added for the first 
+time seems to the monkeysphere very similar to a key re-added ten 
+seconds after last login.
+
+Still, from a UI perspective, I want to know what monkeysphere is doing.
+
+------
+
+It looks like jrollins committed a change for reporting at INFO level
+when a host key gets added by the monkeysphere:
+2459fa3ea277d7b9289945748619eab1e3441e5c
+
+When i connect to a host whose key is not already present in my
+known_hosts file, i get the following to stderr:
+
+    ms: * new key for squeak.fifthhorseman.net added to known_hosts file.
+
+This doesn't fully close this bug, because we aren't notifying on key
+deletion, afaict.
+
+------
+
+So current log level DEBUG will output a message if the known host
+file has been modified.  If the issue is that you want to know at the
+default log level everytime the known\_hots file is modified, then we
+should just move this message to INFO instead of debug, and then maybe
+remove the message that I added above.  I was under the impression
+that the issue was more about notification that a *new* key was added
+to the known\_hosts file, and therefore the new INFO message above
+fixed that problem.  Should we do this instead?
+
+In general, more verbose log levels *do* tell the user what the
+monkeysphere is doing.  Moving to DEBUG log level will tell you pretty
+much everything that happens.  I do *not* think that this should be
+the default log level, though.
+
+------
+
+I wouldn't want to see an extremely verbose default log level.  But i
+do think that saying something like "key blah blah blah was stripped
+from your known\_hosts file because it was expired" (for example)
+would be useful.  I think this case would occur infrequently enough
+that it is worth reporting in the UI at the regular log level.
+
+  --dkg
index 56498e83cbc620a1fbab64e33beeef1aea0dbb86..cd7bc76c66755b7ae69f1c290327eeaa809ae8c4 100644 (file)
@@ -2,24 +2,24 @@
 
 # Documentation #
 
-## Dependencies ##
-
-Monkeysphere relies on:
-
- * [GnuTLS](http://gnutls.org/) version 2.4.0 or later
- * [OpenSSH](http://openssh.com/)
- * [GnuPG](http://gnupg.org/)
-
 ## Getting started ##
 
  * [Downloading and installing](/download)
  * Getting started as a [user](/getting-started-user)
  * Getting started as a [server admin](/getting-started-admin)
+
+## Going further ##
+
+ * [Signing host keys](/signing-host-keys)
+
+## Under the hood ##
+
  * [Developing the monkeysphere](/community)
+ * [Technical details](/technical-details)
 
 ## References ##
 
- * [Initial specifications at CMRG](http://cmrg.fifthhorseman.net/wiki/OpenPGPandSSH)
+ * [Initial Monkeysphere specifications at CMRG](http://cmrg.fifthhorseman.net/wiki/OpenPGPandSSH)
  * [OpenPGP (RFC 4880)](http://tools.ietf.org/html/rfc4880)
  * [Secure Shell Authentication Protocol (RFC 4252)](http://tools.ietf.org/html/rfc4252)
    * [URI scheme for SSH, RFC draft](http://tools.ietf.org/wg/secsh/draft-ietf-secsh-scp-sftp-ssh-uri/)
index 1f27fde4508ce58d252a5089549b68de0e34256e..6d5a73f4e665929285785cd61b320d3ae140e809 100644 (file)
@@ -2,10 +2,25 @@
 
 # Downloading and Installing #
 
+Once you've installed the packages, please see the [documentation
+page](/doc) to read up on how to get started [as a regular
+user](/getting-started-user) or [as a systems
+administrator](/getting-started-admin).
+
+## Dependencies ##
+
+Monkeysphere relies on:
+
+ * [GnuTLS](http://gnutls.org/)
+  * version 2.4 or later for general use
+  * [version 2.6 or later](/news/gnutls-2.6-enables-monkeysphere) to use the `monkeysphere subkey-to-ssh-agent` subcommand.
+ * [OpenSSH](http://openssh.com/)
+ * [GnuPG](http://gnupg.org/)
+
 ## Debian ##
 
-If you are running a Debian system, you can install Monkeysphere
-by following these directions:
+If you are running a [Debian](http://www.debian.org/) system, you can
+install Monkeysphere by following these directions:
 
 You can add this repo to your system by putting the following lines in
 `/etc/apt/sources.list.d/monkeysphere.list`:
@@ -13,23 +28,20 @@ You can add this repo to your system by putting the following lines in
        deb http://archive.monkeysphere.info/debian experimental monkeysphere
        deb-src http://archive.monkeysphere.info/debian experimental monkeysphere
 
-The repository is currently signed by the Monkeysphere archive
-signing key, key id EB8AF314 (fingerprint: `2E8D
-D26C 53F1 197D DF40 3E61 18E6 67F1 EB8A F314`).  To cryptographically
+The repository is currently signed by [The Monkeysphere archive
+signing key](/archive-key), key id EB8AF314 (fingerprint: `2E8D D26C
+53F1 197D DF40 3E61 18E6 67F1 EB8A F314`).  To cryptographically
 verify the packages, you'll want to [add this key to your apt
 configuration after verifying its integrity](/archive-key).
 
 To use the `monkeysphere subkey-to-ssh-agent` subcommand, you will
-also need [version 2.6 of GnuTLS](/news/gnutls-2.6-enables-monkeysphere),
-which is available in Debian experimental.
-
-Once you've installed the packages, you might want to read up on how
-to get started [as a regular user](/getting-started-user) or [as a
-systems administrator](/getting-started-admin).
+also need [version 2.6 of
+GnuTLS](/news/gnutls-2.6-enables-monkeysphere), which is available in
+Debian experimental.
 
 ## FreeBSD ##
 
-There is [now a FreeBSD port available](/news/FreeBSD-port-available/)
+There is [now a FreeBSD port available](/news/FreeBSD-port-available)
 for the Monkeysphere.
 
 While the monkeysphere is not officially included in the ports tree
@@ -51,44 +63,50 @@ port with:
     cd /usr/ports/security/monkeysphere
     make && make install
 
+To use the `monkeysphere subkey-to-ssh-agent` subcommand, you will
+also need [version 2.6 of
+GnuTLS](/news/gnutls-2.6-enables-monkeysphere), which is [slated to be
+available after the 7.1 ports slush is
+over](http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/127330).
+
 ## Source ##
 
 For those that would like to download the source directly, [the source
 is available](/community) via [git](http://git.or.cz/).
 
 The [latest
-tarball](http://archive.monkeysphere.info/debian/pool/monkeysphere/m/monkeysphere/monkeysphere_0.19.orig.tar.gz)
+tarball](http://archive.monkeysphere.info/debian/pool/monkeysphere/m/monkeysphere/monkeysphere_0.21.orig.tar.gz)
 is also available, and has these checksums:
 
 <pre>
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-checksums for the monkeysphere 0.19 release:
+checksums for the monkeysphere 0.21 release:
 
 MD5:
-64c643dd0ab642bbc8814aec1718000e  monkeysphere_0.19.orig.tar.gz
+15fe181983565aca0fbe4c41f9f6752e  monkeysphere_0.21.orig.tar.gz
 
 SHA1:
-ea3c263b084d2c0b7922cd96677be192201700e4  monkeysphere_0.19.orig.tar.gz
+27e915a45cdbe50a139ed4f4b13746b17c165b0f  monkeysphere_0.21.orig.tar.gz
 
 SHA256:
-321b77c1e10fe48ffbef8491893f5dd22842c35c11464efa7893150ce756a522  monkeysphere_0.19.orig.tar.gz
+1535c3f722f5f5c1646a4981efef4a262ac7b23bf4b980c9aee11af2600eedc2  monkeysphere_0.21.orig.tar.gz
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.9 (GNU/Linux)
 
-iQIVAwUBSQgMCRjmZ/HrivMUAQI2Jg//bZoSxx0Nor6uBikRGHQny8LzgUT/0kpv
-xg0eRmL9kQwhGis/sdOiJ9cHykJ1ukhRiIZGfxPBdxiQbWGs9nM6147TGIDgqx6D
-yYIW41dvzTRB0TwjNd7g1q6MaSiDNuU/6dD+ooM3/IiR8PDR7X8we0WhSM63KD+v
-HeMsN51UMhBfeaZ06fxrjYoJCvnp0YNYJpLuvtd5tzxqJCJA2Vh5VqJMbMP/MtbY
-zM/zuNXRI1mJnQZeU++IaAnimX7c7SsGjLaloZG8mapYqqY0tKJ5Yod6aeloq+i5
-wI4gZuuPcgAntD6cnPaqB1ni/d71yywme5F75zpezXGzKzDSh1J5oE6akjMi2lJE
-DSOKp7zb7TvDwXxCl+vOVod81F260gPhonlTsD/LpBfPGPBdWlWP+fFchb9N/a2u
-weCMhUYX1u8Jg/bHIycjoQjPEgZwCkJT9RKF1NTLyWvb4P4a3sPe+fauCMZFbTQ/
-3EYPRBY+PfIDO09XswdB5O3gq6B33ChyWJpdwlXEEHMcFt1FuezuP0avVM9/3ZNp
-MkqalDrUEd65X8o+CE3KjFxjMceVdda9mz2netnoHrFMW6X3mFqE2fTldgHi1mCT
-hMCqpPzY04+HOHYZ0GapR3pvedd4dwhkNYrdpckp+nJMTRfexEPH/NXDVNH/mxKg
-jLoIos0SaiY=
-=VUsz
+iQIVAwUBSR8+7BjmZ/HrivMUAQLeKg/+JT4LCXBR/06p/w2KBd1MKqch5Qf2ryIo
+mxCTWtZRgVQSeOFUJ5SXX+Tfs7VZfkV5HuahUH3NmGC6EMhYyB2olwBOOoIAqEKw
+1zVyn49bowCee+gTc3QHyT0Eqgt2ARtzl3/VrHkiw2MaJN3IZXseovyL8ksnEu+u
+s8fq26imtBrrucIxp4ZtHUw/h/YrJohHcJ8QQN5/UWFLug4C4aRFmnzL+oCySxAa
+0au/zFxxRZE5pMhLUvRwwCwPFx2CGBz6y9lAOiDPhhUqh+Bf7JKWJzk35Dj5Tm+2
+lCIzYtfpBkuF9ehCrm8WYF5aFg+gto8Bc6IJci9J6h2npBYIG0IbWOknMZz3+Ti2
+c3EltlJjK0LKEHujDYjf9tkNAxbBdtlYuw8x925ILeK7n8xX0Jr1TDzPyAIYaogv
+IVqsgnvQ489K8k06173kyrPaetyvOlU3bN1zcPdqTyCD6+eBbeCeKXO4324C8iMF
+rQPW4HScOdIidqFuzHyIT7PoY4DwWMgeAVymRSEufifvRcdCvQdlC4MaxxVf5I8A
+ATkD3CrY+5NZeERAGbmlu7Uz+sUk5tLUH0Q2qvjZUIQRctfr4BMheuBubsLR9yP3
+FZ4Q4kl34eU/WU7NtTmIFy7gDhLSIoeQINfYZlNEXQ7Y/RZUOEwoPI/spAXgw6De
+Xpsw0wPZtcM=
+=JDaA
 -----END PGP SIGNATURE-----
 </pre>
diff --git a/website/features.mdwn b/website/features.mdwn
new file mode 100644 (file)
index 0000000..1aabda1
--- /dev/null
@@ -0,0 +1,4 @@
+[[meta title="Features"]]
+
+# Features #
+
index 6c8ad53838ac2d083ec6282fc5e9d467e159c80a..1c373acffa1883d8de5f1ec351fa8dd33bb84697 100644 (file)
@@ -7,6 +7,7 @@ so that your users can have it automatically verified, and you can set
 up your machine to automatically identify connecting users by their
 presence in the OpenPGP web of trust.
 
+
 Server host key publication
 ---------------------------
 To generate and publish a server host key:
@@ -48,6 +49,7 @@ effect.  As with any change to `sshd_config`, be sure to retain an
 existing session to the machine while you test your changes so you
 don't get locked out.
 
+
 Monkeysphere authorized_keys maintenance
 ----------------------------------------
 
index 66378dc12587dd2b8f3d67ca40b0604f6b0ba2d8..9b04edc819612249349d6b3b5dc9184b13aa642b 100644 (file)
@@ -20,19 +20,21 @@ done with a simple cronjob.  An example of crontab line to do this is:
 
 This would refresh your keychain every day at noon.
 
+
 Install the monkeysphere software on your system
 ------------------------------------------------
 
 If you haven't installed monkeysphere yet, you will need to [download
-and install] (/download) before continuing.
+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
@@ -47,6 +49,7 @@ 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)
 ----------------------------------------
 
@@ -91,6 +94,7 @@ 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
 ---------------------------------------------
 
@@ -105,6 +109,7 @@ you can feed your authentication subkey to your ssh agent by running:
 
 FIXME: using the key with a single ssh connection?
 
+
 Establish trust
 ---------------
 
diff --git a/website/news/release-0.20-1.mdwn b/website/news/release-0.20-1.mdwn
new file mode 100644 (file)
index 0000000..841369d
--- /dev/null
@@ -0,0 +1,18 @@
+[[meta title="Monkeysphere 0.20-1 released!"]]
+
+Monkeysphere 0.20-1 has been released.  
+
+Notes from the changelog:
+
+<pre>
+  [ Daniel Kahn Gillmor ]
+  * ensure that tempdirs are properly created, bail out otherwise instead
+    of stumbling ahead.
+  * minor fussing with the test script to make it cleaner.
+
+  [ Jameson Graef Rollins ]
+  * clean up Makefile to generate more elegant source tarballs.
+  * make myself the maintainer.
+</pre>
+
+[[Download]] it now!
diff --git a/website/news/release-0.21-1.mdwn b/website/news/release-0.21-1.mdwn
new file mode 100644 (file)
index 0000000..e807775
--- /dev/null
@@ -0,0 +1,10 @@
+[[meta title="Monkeysphere 0.21-1 released!"]]
+
+Monkeysphere 0.21-1 has been released.  
+
+Notes from the changelog:
+
+<pre>
+</pre>
+
+[[Download]] it now!
diff --git a/website/signing-host-keys.mdwn b/website/signing-host-keys.mdwn
new file mode 100644 (file)
index 0000000..1eb61a0
--- /dev/null
@@ -0,0 +1,127 @@
+# Signing a host's SSH key using OpenPGP #
+
+This page is meant to address the issue of signing OpenPGP-based SSH
+host keys.  Machines are not people, so the circumstances under which
+one should sign a host key are different from those under which one
+should sign another person's key.
+
+# Why are signatures on an SSH host key important? #
+
+In order for users to validate a host (an SSH server) in a
+monkeysphere-enabled network, the host key must have *full* calculated
+validity from the perspective of the connecting user.  If the user has
+not themselves signed the server's key, then the server's key can only
+be valid if other people that the user trusts have signed the key.
+
+If only one person has signed the server's key, then the user must
+fully trust the single person who has signed the host key.  Full trust
+should be granted sparingly and with consideration, though, so unless
+the user knows the server admin very well, they will in general not
+have full trust of this person.
+
+However, full trust of the host key can also be achieved if the
+server key has been signed by three or more people that the user has
+ *marginal* trust of.  In other words, three or more *marginally*
+trusted signatures equals one *fully* trusted signature.  It is much
+more common for users to have marginal trust of other users in the Web
+of Trust.  For this reason, it is advisable to have as many people
+sign the server key as possible.
+
+## What information should you have before signing a host key? ##
+
+Before signing the key of a person, you want to do two things:
+
+1. verify the identity of the person.
+2. verify that the person is actually in control of the key that you
+are signing.
+
+For a server, you want to do basically the same thing:
+
+1. verify the identity of the server.
+2. verify that the server is actually in control of the key that you
+are signing.
+
+However, verifying these things for a server is less intuitive than it
+is for a human.
+
+Verifying that the host is in control of the key is, in principle,
+straightforward.  If you are logged on to the machine in question,
+then you can check directly that the key exists on the system.
+
+What is not so straightforward is what exactly it means to "verify the
+identity" of a remote server on the internet?  The identity in this
+case is the fully qualified domain name (FQDN) of the host.  Verifying
+this identity amounts to being sure that the host in question really
+is located at that FQDN.
+
+## Signing the host key ##
+
+If you are the person (or persons) that actually setup the server and
+configured Monkeysphere and ssh on the server, then you should sign
+the host key as part of that process.  When the server is first set
+up, the administrators who set it up are the only ones who can
+actually vouch for the server key, so their signatures are necessary
+to get things going.  Their signatures are also necessary so that they
+can validate the host key themselves and log into the server via
+monkeysphere-enabled ssh in the future.
+
+If you did not set up the server initially, you do not have an
+accumulated full trust of the person(s) who did, and you do not
+necessarily have console access to the server directly, it's hard to
+confidently verify the server identity and key ownership.  You would
+like to be able to walk up to the server, log in at the console, and
+get the fingerprint of the ssh host key directly.  But this is usually
+impossible.
+
+However, it is still possible to verify the server identity *and*
+server ownership of the key, even in this case.
+
+## Remotely verifying host identity and key possession ##
+
+It is in fact possible to verify the identity and key ownership of a
+server in one fell swoop with monkeysphere-enabled ssh.  Here is the
+procedure:
+
+> **Attempt to make a monkeysphere-enabled ssh connection to the host in
+question.  Monkeysphere will check that the ssh host key offered by the
+host matches the OpenPGP key with the correct host FQDN user ID.  If
+the ssh host key and the OpenPGP key with the correct user ID match,
+then you will have effectively:**
+
+>**1. verified the host identity, because you actually connected to the
+host in question, which you know because you:**
+
+>**2. verified the host is in control of the key, because the ssh host
+key offered by the host matches the OpenPGP key with correct host FQDN
+user ID.**
+
+Here is an example:
+
+       servo:~ 0$ ssh zimmermann.mayfirst.org
+       -------------------- Monkeysphere warning -------------------
+       Monkeysphere found OpenPGP keys for this hostname, but none had full validity.
+       An OpenPGP key matching the ssh key offered by the host was found:
+       
+       pub   2048R/860E8F9C 2008-10-29 [expires: 2009-02-26]
+       uid       [marginal] ssh://zimmermann.mayfirst.org
+       sig!         76CC057D 2008-11-15  Jamie McClelland <jamie@mayfirst.org>
+       sig!3        860E8F9C 2008-10-29  ssh://zimmermann.mayfirst.org
+       sig!         D21739E9 2008-10-29  Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+       sig!         1CF2D62A 2008-11-16  Micah Anderson <micah@riseup.net>
+       
+       RSA key fingerprint is 81:96:13:3e:24:c9:3c:5b:3c:6d:55:ba:58:85:e9:9e.
+       -------------------- ssh continues below --------------------
+       The authenticity of host 'zimmermann.mayfirst.org (<no hostip for proxy command>)' can't be established.
+       RSA key fingerprint is 81:96:13:3e:24:c9:3c:5b:3c:6d:55:ba:58:85:e9:9e.
+       No matching host key fingerprint found in DNS.
+       Are you sure you want to continue connecting (yes/no)? no
+       Host key verification failed.
+       servo:~ 255$ 
+
+I have attempted to connect to the host zimmermann.mayfirst.org.
+zimmermann's host key has only *marginal* validity for the FQDN user
+ID in question, so I am not able to connect.  However, the
+Monkeysphere has checked that the ssh host key actually does match the
+OpenPGP key with the correct user ID `ssh://zimmermann.mayfirst.org`.
+I have therefore verified the identity of zimmermann, and verified
+that zimmermann is in possession of the key in question.
diff --git a/website/technical-details.mdwn b/website/technical-details.mdwn
new file mode 100644 (file)
index 0000000..902e356
--- /dev/null
@@ -0,0 +1,28 @@
+[[meta title="Technical Details"]]
+
+# Technical Details #
+
+Under construction.
+
+## Host key verification ##
+
+When an ssh connection is initiated, the ssh client checks that the
+host key presented by the server matches one found in the connecting
+user's `known_hosts` file.  If so, the ssh client allows the
+connection to continue.  If not, the client asks the user if they
+would like to accept the host key for future session by asking the
+user to verify the host key's fingerprint.
+
+### Adding a server to the monkeysphere ###
+
+Servers are "monkeysphere enabled" by generating an OpenPGP
+authentication key for the server, translating the key into on ssh
+key, and publishing the host key to the Web of Trust.
+
+### Verifying a host key ###
+
+## User authentication ##
+
+### Adding an individual to the monkeysphere ###
+
+### Verifying a user key ###