Return-Path: Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 42746 invoked by uid 500); 19 Feb 2003 04:43:14 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 42735 invoked by uid 500); 19 Feb 2003 04:43:14 -0000 Delivered-To: apmail-httpd-site-cvs@apache.org Date: 19 Feb 2003 04:43:13 -0000 Message-ID: <20030219044313.32873.qmail@icarus.apache.org> From: jerenkrantz@apache.org To: httpd-site-cvs@apache.org Subject: cvs commit: httpd-site/xdocs/dev verification.xml index.xml X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N jerenkrantz 2003/02/18 20:43:13 Modified: docs download.html docs/dev index.html xdocs download.xml xdocs/dev index.xml Added: xdocs/dev verification.xml Log: Add a verification guidelines page. Revision Changes Path 1.19 +2 -1 httpd-site/docs/download.html Index: download.html =================================================================== RCS file: /home/cvs/httpd-site/docs/download.html,v retrieving revision 1.18 retrieving revision 1.19 diff -u -u -r1.18 -r1.19 --- download.html 22 Jan 2003 15:25:23 -0000 1.18 +++ download.html 19 Feb 2003 04:43:13 -0000 1.19 @@ -193,7 +193,8 @@

It is essential that you verify the integrity of the downloaded -files using the PGP or MD5 signatures.

+files using the PGP or MD5 signatures. Please read Verifying Apache HTTP Server Releases for +more information on why you should verify our releases.

The PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the particular 1.26 +2 -0 httpd-site/docs/dev/index.html Index: index.html =================================================================== RCS file: /home/cvs/httpd-site/docs/dev/index.html,v retrieving revision 1.25 retrieving revision 1.26 diff -u -u -r1.25 -r1.26 --- index.html 28 Dec 2002 21:12:18 -0000 1.25 +++ index.html 19 Feb 2003 04:43:13 -0000 1.26 @@ -207,6 +207,8 @@

  • A shell script to build a binary release
  • +
  • Verifying Apache HTTP Server releases +
  • 1.18 +3 -1 httpd-site/xdocs/download.xml Index: download.xml =================================================================== RCS file: /home/cvs/httpd-site/xdocs/download.xml,v retrieving revision 1.17 retrieving revision 1.18 diff -u -u -r1.17 -r1.18 --- download.xml 22 Jan 2003 15:25:23 -0000 1.17 +++ download.xml 19 Feb 2003 04:43:13 -0000 1.18 @@ -159,7 +159,9 @@
    Verify the integrity of the files

    It is essential that you verify the integrity of the downloaded -files using the PGP or MD5 signatures.

    +files using the PGP or MD5 signatures. Please read Verifying Apache HTTP Server Releases for +more information on why you should verify our releases.

    The PGP signatures can be verified using PGP or GPG. First download the KEYS 1.7 +2 -0 httpd-site/xdocs/dev/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/httpd-site/xdocs/dev/index.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -u -u -r1.6 -r1.7 --- index.xml 25 Nov 2002 05:17:40 -0000 1.6 +++ index.xml 19 Feb 2003 04:43:13 -0000 1.7 @@ -118,6 +118,8 @@

  • A shell script to build a binary release
  • +
  • Verifying Apache HTTP Server releases +
  • 1.1 httpd-site/xdocs/dev/verification.xml Index: verification.xml =================================================================== Documentation Group Verifying Apache HTTP Server Releases
    What we sign

    All official releases of code distributed by the Apache HTTP Server Project are signed by the release manager for the release. PGP signatures and MD5 hashes are available along with the distribution.

    You should download the PGP signatures and MD5 hashes directly from the Apache Software Foundation rather than our mirrors. This is to help ensure the integrity of the signature files. However, you are encouraged to download the releases from our mirrors. (Our download page points you at the mirrors for the release and the official site for the signatures, so this happens automatically for you.)

    Checking Signatures

    The following example details how signature interaction works. In this example, you are already assumed to have downloaded httpd-2.0.44.tar.gz (the release) and httpd-2.0.44.tar.gz.asc (the detached signature).

    This example uses The GNU Privacy Guard. Any OpenPGP-compliant program should work successfully.

    First, we will check the detached signature (httpd-2.0.44.tar.gz.asc) against our release (httpd-2.0.44.tar.gz).

      % gpg httpd-2.0.44.tar.gz.asc
      gpg: Signature made Sat Jan 18 07:21:28 2003 PST using DSA key ID DE885DD3
      gpg: Can't check signature: public key not found
      

    We don't have the release manager's public key (DE885DD3) in our local system. You now need to retrieve the public key from a key server. One popular server is pgpkeys.mit.edu (which has a web interface). The public key servers are linked together, so you should be able to connect to any key server.

      % gpg --keyserver pgpkeys.mit.edu --recv-key DE885DD3
      gpg: requesting key DE885DD3 from HKP keyserver pgpkeys.mit.edu
      gpg: trustdb created
      gpg: key DE885DD3: public key "Sander Striker <striker@apache.org>" imported
      gpg: Total number processed: 1
      gpg:               imported: 1
      

    In this example, you have now received a public key for an entity known as 'Sander Striker <striker@apache.org>' However, you have no way of verifying this key was created by the person known as Sander Striker. But, let's try to verify the release signature again.

      % gpg httpd-2.0.44.tar.gz.asc
      gpg: Signature made Sat Jan 18 07:21:28 2003 PST using DSA key ID DE885DD3
      gpg: Good signature from "Sander Striker <striker@apache.org>"
      gpg:                 aka "Sander Striker <striker@striker.nl>"
      gpg: checking the trustdb
      gpg: no ultimately trusted keys found
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Fingerprint: 4C1E ADAD B4EF 5007 579C  919C 6635 B6C0 DE88 5DD3
      

    At this point, the signature is good, but we don't trust this key. A good signature means that the file has not been tampered. However, due to the nature of public key cryptography, you need to additionally verify that key DE885DD3 was created by the real Sander Striker.

    Any attacker can create a public key and upload it to the public key servers. They can then create a malicious release signed by this fake key. Then, if you tried to verify the signature of this corrupt release, it would succeed because the key was not the 'real' key. Therefore, you need to validate the authenticity of this key.

    Validating Authenticity of a Key

    You may download public keys for the Apache HTTP Server developers from our website or retrieve them off the public PGP keyservers (see above). However, importing these keys is not enough to verify the integrity of the signatures. If a release verifies as good, you need to validate that the key was created by an official representative of the Apache HTTP Server Project.

    The crucial step to validation is to confirm the key fingerprint of the public key.

      % gpg --fingerprint DE885DD3
      pub  1024D/DE885DD3 2002-04-10 Sander Striker <striker@apache.org>
           Key fingerprint = 4C1E ADAD B4EF 5007 579C  919C 6635 B6C0 DE88 5DD3
      uid                            Sander Striker <striker@striker.nl>
      sub  2048g/532D14CA 2002-04-10
      

    A good start to validating a key is by face-to-face communication with multiple government-issued photo identification confirmations. However, each person is free to have their own standards for determining the authenticity of a key. Some people are satisfied by reading the key signature over a telephone (voice verification). For more information on determining what level of trust works best for you, please read the GNU Privacy Handbook section on Validating other keys on your public keyring.

    Most of the Apache HTTP Server developers have attempted to sign each others' keys (usually with face-to-face validation). Therefore, in order to enter the web of trust, you should only need to validate one person in our web of trust. (Hint: all of our developers' keys are in the KEYS file.)

    For example, the following people have signed the public key for Sander Striker. If you verify any key on this list, you will have a trust path to the DE885DD3 key. If you verify a key that verifies one of the signatories for DE885DD3, then you will have a trust path. (So on, and so on.)

      pub  1024D/DE885DD3 2002-04-10 Sander Striker <striker@apache.org>
      sig         E2226795 2002-05-01   Justin R. Erenkrantz
      sig 3       DE885DD3 2002-04-10   Sander Striker
      sig         CD4DF205 2002-05-28   Wolfram Schlich
      sig         E005C9CB 2002-11-17   Greg Stein
      sig         CC8B0F7E 2002-11-18   Aaron Bannert
      sig         DFEAC4B9 2002-11-19   David N. Welton
      sig 2       82AB7BD1 2002-11-17   Cliff Woolley
      sig 2       13046155 2002-11-28   Thom May
      sig 3       19311B00 2002-11-17   Chuck Murcko
      sig 3       F894BE12 2002-11-17   Brian William Fitzpatrick
      sig 3       5C1C3AD7 2002-11-18   David Reid
      sig 3       E04F9A89 2002-11-18   Roy T. Fielding
      sig 3       CC78C893 2002-11-19   Rich Bowen
      sig 3       08C975E5 2002-11-21   Jim Jagielski
      sig 3       F88341D9 2002-11-18   Lars Eilebrecht
      sig 3       187BD68D 2002-11-21   Ben Hyde
      sig 3       49A563D9 2002-11-23   Mark Cox
      ...more signatures redacted...
      

    Since the developers are usually quite busy, you may not immediately find success in someone who is willing to meet face-to-face (they may not even respond to your emails because they are so busy!). If you do not have a developer nearby or have trouble locating a suitable person, please send an email to the address of the key you are attempting to verify. They may be able to find someone who will be willing to validate their key or arrange alternate mechanisms for validation.