diff options
author | Jameson Graef Rollins <jrollins@finestructure.net> | 2009-02-01 12:16:33 -0500 |
---|---|---|
committer | Jameson Graef Rollins <jrollins@finestructure.net> | 2009-02-01 12:22:30 -0500 |
commit | 98ee387a0ba4b15fe80cfcd7828127ff8ae9518d (patch) | |
tree | dc91dde368970f3de621d57dc075769906eda244 | |
parent | 047780def321f18898c58dcc0e94e09a4b40f465 (diff) |
some small tweaks, and one tiny syntax bug fix, to ma/setup, and some
small formating and comment changes to test/basic
-rw-r--r-- | src/share/ma/setup | 23 | ||||
-rwxr-xr-x | tests/basic | 46 |
2 files changed, 51 insertions, 18 deletions
diff --git a/src/share/ma/setup b/src/share/ma/setup index 764fdb8..abce3af 100644 --- a/src/share/ma/setup +++ b/src/share/ma/setup @@ -13,13 +13,13 @@ setup() { # make the core and the sphere: - mkdir -p ${SYSDATADIR}/authentication - mkdir -p ${GNUPGHOME_SPHERE} - mkdir -p ${GNUPGHOME_CORE} + mkdir -p "${SYSDATADIR}"/authentication + mkdir -p "${GNUPGHOME_SPHERE}" + mkdir -p "${GNUPGHOME_CORE}" # deliberately replace the config files via truncation # FIXME: should we be dumping to tmp files and then moving atomically? - cat >${GNUPGHOME_CORE}/gpg.conf <<EOF + cat >"${GNUPGHOME_CORE}"/gpg.conf <<EOF # Monkeysphere trust core GnuPG configuration # This file is maintained by the Monkeysphere software. # Edits will be overwritten. @@ -27,7 +27,7 @@ no-greeting list-options show-uid-validity EOF - cat >${GNUPGHOME_SPHERE}/gpg.conf <<EOF + cat >"${GNUPGHOME_SPHERE}"/gpg.conf <<EOF # Monkeysphere trust sphere GnuPG configuration # This file is maintained by the Monkeysphere software. # Edits will be overwritten. @@ -38,6 +38,7 @@ keyring ${GNUPGHOME_CORE}/pubring.gpg list-options show-uid-validity EOF + # fingerprint of core key. this should be empty on unconfigured systems. local CORE_FPR=$(gpg_core --with-colons --fixed-list-mode --fingerprint --list-secret-key | grep ^fpr: | cut -f10 -d: ) if [ -z "$CORE_FPR" ] ; then @@ -53,12 +54,8 @@ EOF # date. < "${TMPLOC}/authkey" pem2openpgp "$CORE_UID" | gpg --import || failure "Could not import new key for Monkeysphere authentication trust core" - then - CORE_FPR=$(gpg_core --with-colons --fixed-list-mode --fingerprint --list-secret-key | grep ^fpr: | cut -f10 -d: ) - if [ -z "$CORE_FPR" ] ; then - failure "Failed to find fingerprint of Monkeysphere authentication trust core!" - fi - else + CORE_FPR=$(gpg_core --with-colons --fixed-list-mode --fingerprint --list-secret-key | grep ^fpr: | cut -f10 -d: ) + if [ -z "$CORE_FPR" ] ; then failure "Failed to create Monkeysphere authentication trust core!" fi @@ -71,11 +68,11 @@ EOF printf "%s:6:\n" "$CORE_FPR" | gpg_sphere --import-ownertrust local ORIG_TRUST if ORIG_TRUST=$(gpg_sphere --export-ownertrust | grep '^[^#]') ; then - if [ "$CORE_FPR:6:" != "$ORIG_TRUST" ] ; then + if [ "${CORE_FPR}:6:" != "$ORIG_TRUST" ] ; then failure "Monkeysphere authentication trust sphere should explicitly trust the core. It does not have proper ownertrust settings." fi else - failure "Could not get monkeysphere-authentication trust guidleines." + failure "Could not get monkeysphere-authentication trust guidelines." fi # ensure that we're using the extended trust model (1), and that diff --git a/tests/basic b/tests/basic index c3d3208..e30f31b 100755 --- a/tests/basic +++ b/tests/basic @@ -137,9 +137,11 @@ export SOCKET="$TEMPDIR"/ssh-socket # *anything* with any running X11 session. export DISPLAY=monkeys + ### CONFIGURE ENVIRONMENTS # copy in admin and testuser home to tmp +echo "##################################################" echo "### copying admin and testuser homes..." cp -a "$TESTDIR"/home/admin "$TEMPDIR"/ cp -a "$TESTDIR"/home/testuser "$TEMPDIR"/ @@ -160,6 +162,7 @@ EOF get_gpg_prng_arg >> "$GNUPGHOME"/gpg.conf # set up sshd +echo "##################################################" echo "### configuring sshd..." cp "$TESTDIR"/etc/ssh/sshd_config "$SSHD_CONFIG" # write the sshd_config @@ -172,10 +175,12 @@ EOF ### SERVER HOST SETUP # set up monkeysphere host +echo "##################################################" echo "### configuring monkeysphere host..." mkdir -p -m 750 "$MONKEYSPHERE_SYSDATADIR"/host # create a new host key +echo "##################################################" echo "### generating server host key..." # add gpg.conf with quick-random get_gpg_prng_arg >> "$MONKEYSPHERE_SYSCONFIGDIR"/host/gpg.conf @@ -183,10 +188,13 @@ echo | monkeysphere-host expert gen-key --length 1024 --expire 0 testhost # remove the gpg.conf rm "$MONKEYSPHERE_SYSCONFIGDIR"/host/gpg.conf +# FIXME: need to test import-key as well + HOSTKEYID=$( monkeysphere-host show-key | grep '^OpenPGP fingerprint: ' | cut -f3 -d\ ) # certify it with the "Admin's Key". # (this would normally be done via keyservers) +echo "##################################################" echo "### certifying server host key..." GNUPGHOME="$MONKEYSPHERE_SYSCONFIGDIR"/host gpg --armor --export "$HOSTKEYID" | gpgadmin --import echo y | gpgadmin --command-fd 0 --sign-key "$HOSTKEYID" @@ -194,10 +202,13 @@ echo y | gpgadmin --command-fd 0 --sign-key "$HOSTKEYID" # FIXME: how can we test publish-key without flooding junk into the # keyservers? +# FIXME: should we run "diagnostics" here to test setup? + -### SERVER AUTHENTICATION TESTS +### SERVER AUTHENTICATION SETUP # set up monkeysphere authentication +echo "##################################################" echo "### configuring monkeysphere authentication..." mkdir -p -m 700 "$MONKEYSPHERE_SYSDATADIR"/authentication/{authorized_keys,core,sphere,tmp} cp "$TESTDIR"/etc/monkeysphere/monkeysphere-authentication.conf "$TEMPDIR"/ @@ -206,65 +217,90 @@ AUTHORIZED_USER_IDS="$MONKEYSPHERE_HOME/authentication/authorized_user_ids" EOF # setup server authentication +echo "##################################################" echo "### setting up server authentication..." monkeysphere-authentication setup get_gpg_prng_arg >> "$MONKEYSPHERE_SYSDATADIR"/authentication/sphere/gpg.conf # add admin as identity certifier for testhost +echo "##################################################" echo "### adding admin as certifier..." echo y | monkeysphere-authentication add-id-certifier "$TEMPDIR"/admin/.gnupg/pubkey.gpg +# FIXME: should we run "diagnostics" here to test setup? -### TESTUSER TESTS + +### TESTUSER SETUP # generate an auth subkey for the test user that expires in 2 days +echo "##################################################" echo "### generating key for testuser..." monkeysphere gen-subkey --expire 2 # add server key to testuser keychain +echo "##################################################" echo "### export server key to testuser..." gpgadmin --armor --export "$HOSTKEYID" | gpg --import # teach the "server" about the testuser's key +echo "##################################################" echo "### export testuser key to server..." gpg --export testuser | monkeysphere-authentication gpg-cmd --import + +# update authorized_keys for user +echo "##################################################" echo "### update server authorized_keys file for this testuser..." monkeysphere-authentication update-users $(whoami) + +### TESTS + # connect to test sshd, using monkeysphere-ssh-proxycommand to verify # the identity before connection. This should work in both directions! +echo "##################################################" echo "### ssh connection test for success..." ssh_test # remove the testuser's authorized_user_ids file, update, and make # sure that the ssh authentication FAILS +echo "##################################################" echo "### removing testuser authorized_user_ids and updating..." mv "$TESTHOME"/.monkeysphere/authorized_user_ids{,.bak} monkeysphere-authentication update-users $(whoami) +echo "##################################################" echo "### ssh connection test for server authentication denial..." ssh_test 255 mv "$TESTHOME"/.monkeysphere/authorized_user_ids{.bak,} # put improper permissions on authorized_user_ids file, update, and # make sure ssh authentication FAILS +echo "##################################################" echo "### setting group writability on authorized_user_ids and updating..." chmod g+w "$TESTHOME"/.monkeysphere/authorized_user_ids monkeysphere-authentication update-users $(whoami) +echo "##################################################" echo "### ssh connection test for server authentication denial..." ssh_test 255 chmod g-w "$TESTHOME"/.monkeysphere/authorized_user_ids +echo "##################################################" echo "### setting other writability on authorized_user_ids and updating..." chmod o+w "$TESTHOME"/.monkeysphere/authorized_user_ids monkeysphere-authentication update-users $(whoami) +echo "##################################################" echo "### ssh connection test for server authentication denial..." ssh_test 255 chmod o-w "$TESTHOME"/.monkeysphere/authorized_user_ids +# FIXME: addtest: remove admin as id-certifier and check ssh failure + +# FIXME: addtest: revoke hostname on host key and check ssh failure + +# FIXME: addtest: revoke the host key and check ssh failure trap - EXIT -echo -echo "Monkeysphere basic tests completed successfully!" -echo +echo "##################################################" +echo " Monkeysphere basic tests completed successfully!" +echo "##################################################" cleanup |