You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by je...@apache.org on 2003/02/19 05:43:40 UTC

cvs commit: httpd-site/docs/dev verification.html

jerenkrantz    2003/02/18 20:43:39

  Added:       docs/dev verification.html
  Log:
  Oops, add missing file.
  
  Revision  Changes    Path
  1.1                  httpd-site/docs/dev/verification.html
  
  Index: verification.html
  ===================================================================
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html>
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
         <meta name="author" content="Documentation Group" /><meta name="email" content="docs@httpd.apache.org" />
      <title>Verifying Apache HTTP Server Releases - The Apache HTTP Server Project</title>
   </head>
   <body bgcolor="#ffffff" text="#000000" link="#525D76">
  <p><a href="/"><img src="../images/httpd_logo_wide.gif" alt="The Apache HTTP Server Project" border="0"/></a></p>
   <table border="0" width="100%" cellspacing="4">
     <tr>
      <!-- LEFT SIDE NAVIGATION -->
      <td valign="top" nowrap="nowrap">
             <p><b>Essentials</b></p>
      <menu compact="compact">
            <li><a href="/ABOUT_APACHE.html">About</a></li>
            <li><a href="http://www.apache.org/LICENSE.txt">License</a></li>
            <li><a href="/docs/misc/FAQ.html">FAQ</a></li>
            <li><a href="/security_report.html">Security<br />Reports</a></li>
          </menu>
        <p><b>Download!</b></p>
      <menu compact="compact">
            <li><a href="/download.cgi">from a mirror</a></li>
          </menu>
        <p><b><a 
  href="/docs-project/">Documentation</a></b></p>
      <menu compact="compact">
            <li><a href="/docs/">Apache 1.3</a></li>
            <li><a href="/docs-2.0/">Apache 2.0</a></li>
          </menu>
        <p><b>Get Involved</b></p>
      <menu compact="compact">
            <li><a href="/lists.html">Mailing Lists</a></li>
            <li><a href="/bug_report.html">Bug Reports</a></li>
            <li><a href="/dev/">Developer Info</a></li>
          </menu>
        <p><b>Subprojects</b></p>
      <menu compact="compact">
            <li><a href="/docs-project/">Docs</a></li>
            <li><a href="/test/">Test</a></li>
            <li><a href="/test/flood/">Flood</a></li>
            <li><a href="/apreq/">libapreq</a></li>
            <li><a href="/modules/">Modules</a></li>
          </menu>
        <p><b><a 
  href="/info/">Miscellaneous</a></b></p>
      <menu compact="compact">
            <li><a href="/contributors/">Contributors</a></li>
            <li><a href="/awards.html">Awards</a></li>
            <li><a href="http://nav.webring.org/navcgi?ring=apachesupport;list">Support<br />Webring</a></li>
          </menu>
      </td>
      <!-- RIGHT SIDE INFORMATION -->
      <td align="left" valign="top">
                  <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#525D76">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <a name="Sign"><strong>What we sign</strong></a>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>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.</p>
  <p>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.)</p>
    </blockquote>
   </td></tr>
  </table>
             <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#525D76">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <a name="Checking"><strong>Checking Signatures</strong></a>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>The following example details how signature interaction works.  In this
  example, you are already assumed to have downloaded
  <code>httpd-2.0.44.tar.gz</code> (the release) and
  <code>httpd-2.0.44.tar.gz.asc</code> (the detached signature).</p>
  <p>This example uses <a href="http://www.gnupg.org/">The GNU Privacy Guard</a>.
  Any <a href="http://www.openpgp.org/">OpenPGP</a>-compliant program should work
  successfully.</p>
  <p>First, we will check the detached signature
  (<code>httpd-2.0.44.tar.gz.asc</code>) against our release
  (<code>httpd-2.0.44.tar.gz</code>).</p>
  <pre>
  % 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
  </pre>
  <p>We don't have the release manager's public key (<code>DE885DD3</code>) in
  our local system.  You now need to retrieve the public key from a key
  server.  One popular server is <code>pgpkeys.mit.edu</code> (which has a <a href="http://pgp.mit.edu/">web interface</a>).  The public key servers are
  linked together, so you should be able to connect to any key server.</p>
  <pre>
  % 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 &lt;striker@apache.org&gt;" imported
  gpg: Total number processed: 1
  gpg:               imported: 1
  </pre>
  <p>In this example, you have now received a public key for an entity known
  as 'Sander Striker &lt;striker@apache.org&gt;'  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.</p>
  <pre>
  % 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 &lt;striker@apache.org&gt;"
  gpg:                 aka "Sander Striker &lt;striker@striker.nl&gt;"
  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
  </pre>
  <p>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 <b>real</b> Sander Striker.</p>
  <p>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.</p>
    </blockquote>
   </td></tr>
  </table>
             <table border="0" cellspacing="0" cellpadding="2" width="100%">
   <tr><td bgcolor="#525D76">
    <font color="#ffffff" face="arial,helvetica,sanserif">
     <a name="Validating"><strong>Validating Authenticity of a Key</strong></a>
    </font>
   </td></tr>
   <tr><td>
    <blockquote>
  <p>You may download <a href="http://www.apache.org/dist/httpd/KEYS">public keys
  for the Apache HTTP Server developers</a> 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.</p>
  <p>The crucial step to validation is to confirm the key fingerprint of the
  public key.</p>
  <pre>
  % gpg --fingerprint DE885DD3
  pub  1024D/DE885DD3 2002-04-10 Sander Striker &lt;striker@apache.org&gt;
       Key fingerprint = 4C1E ADAD B4EF 5007 579C  919C 6635 B6C0 DE88 5DD3
  uid                            Sander Striker &lt;striker@striker.nl&gt;
  sub  2048g/532D14CA 2002-04-10
  </pre>
  <p>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 <a href="http://www.gnupg.org/gph/en/manual.html#AEN335">Validating other keys on
  your public keyring</a>.</p>
  <p>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.)</p>
  <p>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.)</p>
  <pre>
  pub  1024D/DE885DD3 2002-04-10 Sander Striker &lt;striker@apache.org&gt;
  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...
  </pre>
  <p>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.</p>
    </blockquote>
   </td></tr>
  </table>
           </td>
     </tr>
     <!-- FOOTER -->
     <tr><td colspan="2"><hr noshade="noshade" size="1"/></td></tr>
     <tr><td colspan="2" align="center">
          <font size="-1">
           <em>Copyright &#169; 1999-2002, The Apache Software Foundation</em>
          </font>
         </td>
     </tr>
    </table>
   </body>
  </html>