Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MONKEYSPHERE-HOST(8)		 System Commands	    MONKEYSPHERE-HOST(8)

NAME
     monkeysphere-host - Monkeysphere host key administration tool.

SYNOPSIS
     monkeysphere-host subcommand [args]

DESCRIPTION
     Monkeysphere  is  a  framework to leverage the OpenPGP web of trust for SSH
     and TLS key-based authentication.

     monkeysphere-host stores and manages OpenPGP certificates for various  ser-
     vices offered by the host.

     Most subcommands take a KEYID argument, which identifies (by OpenPGP key ID
     (e.g.  0xDEADBEEF)  or full OpenPGP fingerprint) which certificate is to be
     operated upon.  If only one certificate is  currently  managed  by  monkey-
     sphere-host,  the KEYID argument may be omitted, and monkeysphere-host will
     operate on it.

SUBCOMMANDS
     monkeysphere-host takes various subcommands:

     import-key FILE SCHEME://HOSTNAME[:PORT]
	    Import a PEM-encoded host secret key from file  FILE.   If	FILE  is
	    `-',  then	the  key will be imported from stdin.  Only RSA keys are
	    supported at the moment.  SCHEME://HOSTNAME[:PORT] is used to  spec-
	    ify  the  scheme  (e.g. ssh or https), fully-qualified hostname (and
	    port) used in the user ID of the new OpenPGP key  (e.g.  ssh://exam-
	    ple.net or https://www.example.net).  If PORT is not specified, then
	    no	port  is  added to the user ID, which means the default port for
	    that service (e.g. 22 for ssh) is assumed.	`i' may be used in place
	    of `import-key'.

     show-keys [KEYID ...]
	    Output information about the OpenPGP certificate(s) for services of-
	    fered by the host, including their KEYIDs.	If no KEYID is specified
	    (or if the special string `--all' is used), output information about
	    all certificates managed by monkeysphere-host.  `s' may be	used  in
	    place of `show-keys'.

     set-expire EXPIRE [KEYID]
	    Extend  the  validity of the OpenPGP certificate specified until EX-
	    PIRE from the present.  Expiration is specified as with GnuPG  (mea-
	    sured from today's date):
		     0 = key does not expire
		  <n>  = key expires in n days
		  <n>w = key expires in n weeks
		  <n>m = key expires in n months
		  <n>y = key expires in n years
	    `e' may be used in place of `set-expire'.

     add-servicename SCHEME://HOSTNAME[:PORT] [KEYID]
	    Add  a  service-specific  user ID to the specified certificate.  For
	    example, the operator of `https://example.net' may wish  to  add  an
	    additional	servicename of `https://www.example.net' to the certifi-
	    cate corresponding to the secret key used  by  the	TLS-enabled  web
	    server.   `add-name'  or  `n+' may be used in place of `add-service-
	    name'.

     revoke-servicename SCHEME://HOSTNAME[:PORT] [KEYID]
	    Revoke a service-specific user ID from  the  specified  certificate.
	    `revoke-name' or `n-' may be used in place of `revoke-servicename'.

     add-revoker REVOKER_KEYID|FILE [KEYID]
	    Add a revoker to the specified OpenPGP certificate.  The revoker can
	    be	specified  by  their own REVOKER_KEYID (in which case it will be
	    loaded from an OpenPGP keyserver), or by specifying a path to a file
	    containing the revoker's OpenPGP certificate, or by  specifying  `-'
	    to load from stdin.  `r+' may be be used in place of `add-revoker'.

     revoke-key [KEYID]
	    Generate  (with  the option to publish) a revocation certificate for
	    given OpenPGP certificate.	If such a certificate is published,  the
	    given  key	will  be  permanently revoked, and will no longer be ac-
	    cepted by monkeysphere-enabled clients.  This  subcommand  will  ask
	    you  a  series of questions, and then generate a key revocation cer-
	    tificate, sending it to stdout.  You might want to store these  cer-
	    tificates safely offline, to publish in case of compromise).  If you
	    explicitly	tell  it  to  publish the revocation certificate immedi-
	    ately, it will send it to the public keyservers.  PUBLISH THESE CER-
	    TIFICATES ONLY IF YOU ARE SURE THE CORRESPONDING KEY WILL  NEVER  BE
	    RE-USED!

     publish-keys [KEYID ...]
	    Publish the specified OpenPGP certificates to the public keyservers.
	    If	the  special  string  `--all'  is  specified,  all of the host's
	    OpenPGP certificates will be published.  `p' may be used in place of
	    `publish-keys'.  NOTE: that there is no way to remove a key from the
	    public keyservers once it is published!

     version
	    Show the monkeysphere version number.  `v' may be used in  place  of
	    `version'.

     help   Output  a  brief  usage summary.  `h' or `?' may be used in place of
	    `help'.

     diagnostics
	    Review the state of the monkeysphere server host key and  report  on
	    suggested  changes.   Among  other checks, this includes making sure
	    there is a valid host key, that the key is	not  expired,  that  the
	    sshd  configuration points to the right place, etc.  `d' may be used
	    in place of `diagnostics'.

SETUP SSH SERVER CERTIFICATES
     To enable users to verify your SSH host's	key  via  the  monkeysphere,  an
     OpenPGP  certificate  must  be  made out of the host's RSA ssh key, and the
     certificate must be published to the Web of Trust.  Certificate publication
     is not done by default.  The first step is to import  the	host's	ssh  key
     into  a  monkeysphere-style OpenPGP certificate.  This is done with the im-
     port-key command.	For example:

     #	  monkeysphere-host    import-key    /usr/local/etc/ssh/ssh_host_rsa_key
     ssh://host.example.org

     On   most	 systems,   sshd's   RSA   secret  key	is  stored  at	/usr/lo-
     cal/etc/ssh/ssh_host_rsa_key.

     See PUBLISHING AND CERTIFYING MONKEYSPHERE SERVICE CERTIFICATES for how  to
     make  sure  your users can verify the ssh service offered by your host once
     the key is imported into monkeysphere-host.

SETUP WEB SERVER CERTIFICATES
     You can set up your HTTPS-capable web server so that your users can  verify
     it  via  the  monkeysphere, without changing your server's software at all.
     You just need access to a (PEM-encoded) version of the server's RSA  secret
     key  (most  secret keys are already stored PEM-encoded).  The first step is
     to import the web server's key into a monkeysphere-style  OpenPGP	certifi-
     cate.  This is done with the import-key command.  For example:

     #	  monkeysphere-host   import-key   /usr/local/etc/ssl/private/host.exam-
     ple.net-key.pem https://host.example.net

     If you don't know where the web server's key is  stored  on  your	machine,
     consult  the configuration files for your web server.  Debian-based systems
     using the `ssl-cert' packages often have a default self-signed  certificate
     stored  in  `/usr/local/etc/ssl/private/ssl-cert-snakeoil.key'  ; if you're
     using that key, your users are getting browser warnings about it.	You  can
     keep  using  the same key, but help them use the OpenPGP WoT to verify that
     it does belong to your web server by using something like:

     #	      monkeysphere-host        import-key	 /usr/local/etc/ssl/pri-
     vate/ssl-cert-snakeoil.key https://$(hostname --fqdn)

     If  you offer multiple HTTPS websites using the same secret key, you should
     add the additional website names with the `add-servicename' subcommand.

     See PUBLISHING AND CERTIFYING MONKEYSPHERE SERVICE CERTIFICATES  (the  next
     section)  for  how to make sure your users can verify the https service of-
     fered by your host once the key is imported and any extra site  names  have
     been added.  Note that you can add or remove additional servicenames at any
     time, but you'll need to certify any new ones separately.

PUBLISHING AND CERTIFYING MONKEYSPHERE SERVICE CERTIFICATES
     Once  the host key has been imported, the corresponding certificate must be
     published to the Web of Trust so that users can retrieve the cert when con-
     necting to the host.  The host certificates are published to the  keyserver
     with the publish-key command:

     $ monkeysphere-host publish-key --all

     In  order	for users accessing the system to be able to identify the host's
     service via the monkeysphere, at least one person	(e.g.  a  server  admin)
     will  need  to  sign  the	host's certificate.  This is done using standard
     OpenPGP keysigning techniques.  Usually: pull the host's  OpenPGP	certifi-
     cate  from the keyserver, verify and sign it, and then re-publish your sig-
     nature.  More than one person can	certify  any  certificate.   Please  see
     https://web.monkeysphere.info/doc/host-keys/  for	more information and de-
     tails.  Once an admin's signature is published, users  accessing  the  host
     can  use the certificate to validate the host's key without having to manu-
     ally check the host key's fingerprint (in the case of ssh) or without  see-
     ing a nasty "security warning" in their browsers (in the case of https).

SECURITY CONSIDERATIONS
     Note  that monkeysphere-host currently caches a copy of all imported secret
     keys (stored in OpenPGP form for future manipulation)  in	/var/lib/monkey-
     sphere/host/.   Cleartext	backups  of files in this directory could expose
     secret key material if not handled sensitively.

ENVIRONMENT
     The following environment variables will override those  specified  in  the
     config file (defaults in parentheses):

     MONKEYSPHERE_LOG_LEVEL
	    Set  the  log level.  Can be SILENT, ERROR, INFO, VERBOSE, DEBUG, in
	    increasing order of verbosity. (INFO)

     MONKEYSPHERE_KEYSERVER
	    OpenPGP keyserver to use. (pool.sks-keyservers.net)

     MONKEYSPHERE_PROMPT
	    If set to `false', never prompt the user for confirmation. (true)

FILES
     /usr/local/usr/local/etc/monkeysphere/monkeysphere-host.conf
	    System monkeysphere-host config file.

     /var/lib/monkeysphere/host_keys.pub.pgp
	    A world-readable copy of the host's OpenPGP  certificates  in  ASCII
	    armored  format.  This includes the certificates (including the pub-
	    lic keys, servicename-based  User  IDs,  and  most	recent	relevant
	    self-signatures) corresponding to every key used by Monkeysphere-en-
	    abled services on the host.

     /var/lib/monkeysphere/host/
	    A  locked  directory  (readable  only  by  the superuser) containing
	    copies of all imported secret keys (this is the host's GNUPGHOME di-
	    rectory).

     /usr/local/usr/local/etc/monkeysphere/monkeysphere-host-x509-anchors.crt or
     /usr/local/usr/local/etc/monkeysphere/monkeysphere-x509-anchors.crt
	    If monkeysphere-host is configured to query an  hkps  keyserver  for
	    publish-keys,  it will use the PEM-encoded X.509 Certificate Author-
	    ity certificates in this file to  validate	any  X.509  certificates
	    used  by  the  keyserver.	If  the  monkeysphere-host-x509  file is
	    present, the monkeysphere-x509 file will be ignored.

AUTHOR
     This man page was written by: Jameson Rollins <jrollins@finestructure.net>,
     Daniel Kahn Gillmor <dkg@fifthhorseman.net>, Matthew  Goins  <mjgoins@open-
     flows.com>

SEE ALSO
     monkeysphere(1),  monkeysphere(7),  gpg(1), monkeysphere-authentication(8),
     ssh(1), sshd(8)

monkeysphere			  January 2010		    MONKEYSPHERE-HOST(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=monkeysphere-host&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help