Author: buildbot
Date: Tue Nov 27 22:51:00 2012
New Revision: 839821

Log:
Staging update by buildbot for isis

Modified:
    websites/staging/isis/trunk/cgi-bin/   (props changed)
    websites/staging/isis/trunk/content/   (props changed)
    
websites/staging/isis/trunk/content/contributors/release-process-release-manager-prereqs.html
    websites/staging/isis/trunk/content/contributors/release-process.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Nov 27 22:51:00 2012
@@ -1 +1 @@
-1414423
+1414453

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Nov 27 22:51:00 2012
@@ -1 +1 @@
-1414423
+1414453

Modified: 
websites/staging/isis/trunk/content/contributors/release-process-release-manager-prereqs.html
==============================================================================
--- 
websites/staging/isis/trunk/content/contributors/release-process-release-manager-prereqs.html
 (original)
+++ 
websites/staging/isis/trunk/content/contributors/release-process-release-manager-prereqs.html
 Tue Nov 27 22:51:00 2012
@@ -192,11 +192,505 @@
 </h1>
 </div>
 
-<p>In order that a contributor can make a release it is necessary for them to 
have generated a key and had that key recognized by other members of the ASF.  
</p>
-
 <h2>Key Generation</h2>
 
-<p><em>currently documented in 0.2.0-incubating contributor guide, 'Key 
Generation' appendix.</em></p>
+<p>In order that a contributor can make a release it is necessary for them to 
have generated a key and had that key recognized by other members of the Apache 
Software Foundation. </p>
+
+<p>For further background information on this topic, see the <a 
href="http://www.apache.org/dev/release-signing.html";>release signing page</a> 
and the <a href="http://www.apache.org/dev/openpgp.html#generate-key";>openpgp 
page</a> on the Apache wiki.</p>
+
+<h3>Install and Configure gpg</h3>
+
+<p>Download and install GnuPG (gpg), version 1.4.10 or higher.</p>
+
+<p>Then, edit <code>~/.gnupg/gpg.conf</code> (on Windows, the file to edit is 
<code>C:\Users\xxx\AppData\Roaming\gnupg\gpg.conf</code>) so that the default 
is to generate a strong key:</p>
+
+<pre>
+personal-digest-preferences SHA512
+cert-digest-algo SHA512
+default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 
ZLIB BZIP2 ZIP Uncompressed
+</pre>
+
+<h3>Key Generation</h3>
+
+<p>The ASF requires that keys are signed with a key (or subkey) based on RSA 
4096 bits. To do this:</p>
+
+<pre>
+$ gpg --gen-key
+gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+   (1) RSA and RSA (default)
+   (2) DSA and Elgamal
+   (3) DSA (sign only)
+   (4) RSA (sign only)
+Your selection?
+</pre>
+
+<p>Specify RSA key:</p>
+
+<pre>
+Your selection? 1
+
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048)
+</pre>
+
+<p>Specify key length as 4096 bits:</p>
+
+<pre>
+What keysize do you want? (2048) 4096
+Requested keysize is 4096 bits
+
+Please specify how long the key should be valid.
+         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
+Key is valid for? (0)
+</pre>
+
+<p>Specify key as non-expiring:</p>
+
+<pre>
+Key is valid for? (0) 0
+Key does not expire at all
+Is this correct? (y/N) y
+
+You need a user ID to identify your key; the software constructs the user ID
+from the Real Name, Comment and Email Address in this form:
+    "Heinrich Heine (Der Dichter) <[email protected]>"
+
+Real name: 
+</pre>
+
+<p>Enter your name, email and comment:</p>
+
+<ul>
+<li>use your apache.org email</li>
+<li>the comment should be "CODE SIGNING KEY"</li>
+</ul>
+
+<pre>
+Real name: Xxx Xxxxxxxxx
+Email address: <[email protected]>
+Comment: CODE SIGNING KEY
+You selected this USER-ID:
+    "Xxx Xxxxxxxxx (CODE SIGNING KEY) <[email protected]>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+
+You need a Passphrase to protect your secret key.
+Enter passphrase:
+</pre>
+
+<p>Provide a passphrase to secure your key.</p>
+
+<pre>
+Enter passphrase:
+Repeat passphrase:
+</pre>
+
+<p>GPG will goes on to generate your key:</p>
+
+<pre>
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+...+++++
+.........................+++++
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+....+++++
+...+++++
+gpg: key nnnnnnnn marked as ultimately trusted
+public and secret key created and signed.
+
+gpg: checking the trustdb
+gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
+gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
+pub   4096R/nnnnnnnn yyyy-mm-dd
+      Key fingerprint = xxxx xxxx xxxx xxxx xxxx  xxxx xxxx xxxx xxxx xxxx
+uid                  Xxx Xxxxxx <[email protected]>
+sub   4096R/kkkkkkkk yyyy-mm-dd
+</pre>
+
+<p>The public key with id nnnnnnnn should now be stored in 
<code>~/.gnupg/pubring.pgp</code> (on Windows 7, this is in 
<code>c:/Users/xxx/AppData/Roaming/gnupg/pubring.pgp</code>).</p>
+
+<p>To confirm the key has been generated, use:</p>
+
+<pre>
+$ gpg --list-keys --fingerprint
+</pre>
+
+<p>The key Id is the one true way to identify the key, and is also the last 8 
digits of the fingerprint. The corresponding secret key for id 
<code>nnnnnnnn</code> is stored in <code>~/.gnupg/secring.pgp</code> (on 
Windows 7, this is in 
<code>c:/Users/xxx/AppData/Roaming/gnupg/secring.pgp</code>).</p>
+
+<p>It's also worth confirming the key has the correct preference of algorithms 
(reflecting the initial configuration we did earlier). For this, enter the gpg 
shell for your new key:</p>
+
+<pre>
+$ gpg --edit-key nnnnnnnnn
+>gpg
+</pre>
+
+<p>where <code>nnnnnnnn</code> is your key id. Now, use the 'showpref' 
subcommand to list details:</p>
+
+<pre>
+gpg> showpref
+[ultimate] (1). Xxx Xxxxxxxx (CODE SIGNING KEY) <[email protected]>
+     Cipher: AES256, AES192, AES, CAST5, 3DES
+     Digest: SHA512, SHA384, SHA256, SHA224, SHA1
+     Compression: ZLIB, BZIP2, ZIP, Uncompressed
+     Features: MDC, Keyserver no-modify
+
+gpg>
+</pre>
+
+<p>The Digest line should list SHA-512 first and SHA-1 last.</p>
+
+<p>Finally, remember to take a backup of your key and the keyring (ie, backup 
the <code>.gnupg</code> directory and its contents).</p>
+
+<h3>Subkey Generation</h3>
+
+<p>It's recommended to use a subkey with an expiry date to sign releases, 
rather than your main, non-expiring key. If a subkey is present, then gpg will 
use it for signing in preference to the main key.</p>
+
+<p><div class="note"></p>
+
+<p>After (binary) release artifacts are created, they are deployed to the 
ASF's Nexus staging repository. However, Nexus seems unable to retrieve a 
subkey from the public key server. Until we find a fix/workaround for this, all 
releases should be signed just with a regular non-expiring main key.</p>
+
+<p></div></p>
+
+<p>To create a subkey Enter the gpg shell using (the identifier of) your main 
key:</p>
+
+<pre>
+gpg --edit-key xxxxxxxx
+gpg>
+</pre>
+
+<p>Type 'addkey' to create a subkey, and enter your passphrase for the main 
key:</p>
+
+<pre>
+gpg> addkey
+Key is protected.
+[enter your secret passphrase]
+
+You need a passphrase to unlock the secret key for
+user: "Dan Haywood (CODE SIGNING KEY) <[email protected]>"
+4096-bit RSA key, ID xxxxxxxx, created 2011-02-01
+
+Please select what kind of key you want:
+   (3) DSA (sign only)
+   (4) RSA (sign only)
+   (5) Elgamal (encrypt only)
+   (6) RSA (encrypt only)
+Your selection?
+</pre>
+
+<p>Select (6) to choose an RSA key for encryption:</p>
+
+<p><div class="note"></p>
+
+<p>It would seem that Nexus repository manager does not recognize RSA subkeys 
with an 'S'ign usage; see this discussion on a mailing list and this issue on 
Sonatype's JIRA</p>
+
+<p></div></p>
+
+<pre>
+Your selection? 6
+
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096
+
+Requested keysize is 4096 bits
+
+Please specify how long the key should be valid.
+         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
+Key is valid for?
+</pre>
+
+<p>Specify that the key is valid for 1 year:</p>
+
+<pre>
+Key is valid for? (0) 1y
+
+Key expires at yy/MM/dd hh:mm:ss
+Is this correct? (y/N) y
+Really create? (y/N) y
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+...+++++
+.+++++
+
+pub  4096R/xxxxxxxx  created: yyyy-mm-dd  expires: never       usage: SC
+                     trust: ultimate      validity: ultimate
+sub  4096R/xxxxxxxx  created: yyyy-mm-dd  expires: yyYY-mm-dd  usage: E
+[ultimate] (1). Dan Haywood (CODE SIGNING KEY) <[email protected]>
+
+gpg>
+</pre>
+
+<p>Quit the gpg shell; you now have a subkey.</p>
+
+<h3>Generate a Revocation Certificate</h3>
+
+<p>It's good practice to generate a number of revocation certificates so that 
the key can be revoked if it happens to be compromised. See the <a 
href="http://www.apache.org/dev/openpgp.html#revocation-certs";>gpg page</a> on 
the Apache wiki for more background on this topic.</p>
+
+<p>First, generate a "no reason specified" key:</p>
+
+<pre>
+$ gpg --output revoke-nnnnnnnn-0.asc --armor --gen-revoke nnnnnnnn
+
+sec  4096R/nnnnnnnn yyyy-mm-dd Xxx Xxxxxxx (CODE SIGNING KEY) <[email protected]>
+Create a revocation certificate for this key? (y/N) Y
+
+Please select the reason for the revocation:
+  0 = No reason specified
+  1 = Key has been compromised
+  2 = Key is superseded
+  3 = Key is no longer used
+  Q = Cancel
+(Probably you want to select 1 here)
+Your decision?
+</pre>
+
+<p>Select 0.</p>
+
+<pre>
+Your decision? 0
+
+Enter an optional description; end it with an empty line:
+</pre>
+
+<p>Provide a description:</p>
+
+<pre>
+> Generic certificate to revoke key, generated at time of key creation.
+>
+Reason for revocation: No reason specified
+Generic certificate to revoke key, generated at time of key creation.
+Is this okay? (y/N)
+</pre>
+
+<p>Confirm this is ok.</p>
+
+<pre>
+Is this okay? y
+
+You need a passphrase to unlock the secret key for
+user: "Xxx Xxxxxxx (CODE SIGNING KEY) <[email protected]>"
+4096-bit RSA key, ID nnnnnnnn, created yyyy-mm-dd
+
+Enter passphrase:
+</pre>
+
+<p>Enter a passphrase:</p>
+
+<pre>
+Enter passphrase:
+Revocation certificate created.
+
+Please move it to a medium which you can hide away; if Mallory gets
+access to this certificate he can use it to make your key unusable.
+It is smart to print this certificate and store it away, just in case
+your media become unreadable.  But have some caution:  The print system of
+your machine might store the data and make it available to others!
+</pre>
+
+<p>The file <code>revoke-nnnnnnnn-0.asc</code> should be created: Then, backup 
this file.</p>
+
+<p>Now repeat the process to create two further revocation certificates:</p>
+
+<ul>
+<li><code>gpg --output revoke-nnnnnnnn-1.asc --armor --gen-revoke 
nnnnnnnn</code></p>
+
+<p>Specify reason as "1 = Key has been compromised"</li>
+<li><code>gpg --output revoke-nnnnnnnn-3.asc --armor --gen-revoke 
nnnnnnnn</code></p>
+
+<p>Specify reason as "3 = Key is no longer used"</li>
+</ul>
+
+<p>Backup these files also.</p>
+
+<p><div class="note"></p>
+
+<p>if you find that you need to revoke your certificate, this blog post 
explains how.</p>
+
+<p></div></p>
+
+<h3>Publish Key</h3>
+
+<p>It is also necessary to publish your key. There are several places where 
this should be done. In most cases, you'll need the "armored" " (ie ASCII) 
representation of your key. This can be generated using:</p>
+
+<pre>
+$ gpg --armor --export nnnnnnnn > nnnnnnnn.asc
+</pre>
+
+<p>where <code>nnnnnnnn</code> is the id of your public key.</p>
+
+<p>You'll also need the fingerprint of your key. This can be generated 
using:</p>
+
+<pre>
+$ gpg --fingerprint nnnnnnnn
+</pre>
+
+<p>The output from this command includes a line beginning "Key fingerprint", 
followed by a (space delimited) 40 character hexadecimal fingerprint. The last 
8 characters should be the same as the key id (<code>nnnnnnnn</code>).</p>
+
+<h4>Publish to a public key server</h4>
+
+<p>To a publish your key to a public key server (eg the MIT key server hosted 
at <a href="http://pgp.mit.edu";>http://pgp.mit.edu</a>), use the procedure 
below. Public key servers synchronize with each other, so publishing to one key 
server should be sufficient. For background reading on this, see the <a 
href="http://www.apache.org/dev/release-signing.html#keyserver-upload";>release 
signing page</a> on the Apache wiki, and the <a 
href="http://maven.apache.org/developers/release/pmc-gpg-keys.html";>gpg key 
page</a> on the Maven wiki.</p>
+
+<p>To send the key up to the key server:</p>
+
+<pre>
+$ gpg --send-keys --keyserver pgp.mit.edu nnnnnnnn
+</pre>
+
+<p>where <code>nnnnnnnn</code> is the key Id.</p>
+
+<p>Alternatively, you can browse to the <a href="http://pgp.mit.edu/";>MIT key 
server</a> and paste in the armored representation of your key.</p>
+
+<p>Confirm the key has been added by browsing to submitting the following 
URL:</p>
+
+<p><code>http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&amp;op=vindex</code></p>
+
+<p>again, where <code>nnnnnnnn</code> is the key Id.</p>
+
+<h4>Publish to your Apache home directory</h4>
+
+<p>The armored representation of your public key should be uploaded to your 
home directory on <code>people.apache.org</code>, and renamed as 
<code>.pgpkey</code>. Make sure this is readable by all.</p>
+
+<h4>Publish to your Apache HTML home directory</h4>
+
+<p>The armored representation of your public key should be uploaded to your 
<code>public_html</code> home directory on <code>people.apache.org</code>, 
named <code>nnnnnnnn.asc</code>. Make sure this is readable by all.</p>
+
+<p>Check the file is accessible by browsing to:</p>
+
+<p><code>http://people.apache.org/~xxxxxxxx/nnnnnnnn.asc</code></p>
+
+<p>where</p>
+
+<ul>
+<li><code>xxxxxxxx</code> is your apache LDAP user name</li>
+<li><code>nnnnnnnn</code> is your public key id.</li>
+</ul>
+
+<h4>FOAF</h4>
+
+<p>First, check out the committers/info directory:</p>
+
+<pre>
+svn co https://svn.apache.org/repos/private/committers/info
+</pre>
+
+<p>Go to Apache <a 
href="http://people.apache.org/foaf/foafamatic.html";>FOAF-a-matic</a> web page 
to generate the FOAF file text (we copy this text out in a minute):</p>
+
+<ul>
+<li>enter ASF LDAP user name</li>
+<li>enter First name, Last name</li>
+<li>for PGP key fingerprints, add Key
+<ul>
+<li>paste in the key id</li>
+<li>paste in the fingerprint</li>
+</ul></li>
+<li>press "Create"</li>
+</ul>
+
+<p>In the box below, you should have a FOAF file, something like:</p>
+
+<pre>
+<?xml version="1.0" encoding="UTF-8"?>
+&lt;rdf:RDF
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#";
+      xmlns:foaf="http://xmlns.com/foaf/0.1/";
+      xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#";
+      xmlns:pm="http://www.web-semantics.org/ns/pm#";
+      xmlns:wot="http://xmlns.com/wot/0.1/";
+      xmlns:rss="http://purl.org/rss/1.0/";
+      xmlns:dc="http://purl.org/dc/elements/1.1/";
+      xmlns:ical="http://www.w3.org/2002/12/cal/ical#";
+      xmlns:doap="http://usefulinc.com/ns/doap#"&gt;
+  &lt;foaf:Person rdf:ID="danhaywood"&gt;
+    &lt;foaf:name&gt;Xxx Xxxxxxxx&lt;/foaf:name&gt;
+    &lt;foaf:givenname&gt;Xxx&lt;/foaf:givenname&gt;
+    &lt;foaf:family_name&gt;Xxxxxxxx&lt;/foaf:family_name&gt;
+    &lt;wot:hasKey&gt;
+      &lt;wot:PubKey&gt;
+        &lt;wot:fingerprint&gt;nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn 
nnnn&lt;/wot:fingerprint&gt;
+        &lt;wot:hex_id&gt;nnnnnnnn&lt;/wot:hex_id&gt;
+      &lt;/wot:PubKey&gt;
+    &lt;/wot:hasKey&gt;
+  &lt;/foaf:Person&gt;
+&lt;/rdf:RDF&gt;
+</pre>
+
+<p>(If you are creating the FOAF file for the first time, you may want to add 
additional details).</p>
+
+<p>From this, copy out the <code>wot:key</code>, and paste into your FDF file 
in <code>committers/info</code>:</p>
+
+<pre>
+    &lt;wot:hasKey&gt;
+      &lt;wot:PubKey&gt;
+        &lt;wot:fingerprint&gt;nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn 
nnnn&lt;/wot:fingerprint&gt;
+        &lt;wot:hex_id&gt;nnnnnnnn&lt;/wot:hex_id&gt;
+      &lt;/wot:PubKey&gt;
+    &lt;/wot:hasKey&gt;
+</pre>
+
+<p>Then, manually add in a <code>&lt;wot:pubkeyAddress&gt;</code> element 
within <code>&lt;wot:PubKey&gt;</code>:</p>
+
+<pre>
+    &lt;wot:hasKey&gt;
+      &lt;wot:PubKey&gt;
+        &lt;wot:fingerprint&gt;nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn 
nnnn&lt;/wot:fingerprint&gt;
+        &lt;wot:hex_id&gt;nnnnnnnn&lt;/wot:hex_id&gt;
+        &lt;wot:pubkeyAddress
+          rdf:resource="http://people.apache.org/~username/nnnnnnnn.asc/&gt;
+      &lt;/wot:PubKey&gt;
+    &lt;/wot:hasKey&gt;
+</pre>
+
+<p>ie, referencing your publically exported public key</p>
+
+<p>Finally, commit your changes.</p>
+
+<h4>Save to <code>KEYS</code></h4>
+
+<p>The armored representation of the public key should be saved to Isis' 
<code>KEYS</code> file, <a 
href="https://svn.apache.org/repo/asf/isis/KEYS";>https://svn.apache.org/repo/asf/isis/KEYS</a>
 (ie, parent of <code>trunk</code>).</p>
+
+<p>First, in a new directory, checkout this file:</p>
+
+<pre>
+svn -N co https://svn.apache.org/repos/asf/isis/ .
+</pre>
+
+<p>This should bring down the <code>KEYS</code> file.</p>
+
+<p>Then, export your signature and armored representation.</p>
+
+<pre>
+gpg --list-sigs nnnnnnnn >>KEYS
+gpg --armor --export nnnnnnnn >>KEYS
+</pre>
+
+<p>Then commit.</p>
+
+<h4>id.apache.org</h4>
+
+<p>Log onto <code>id.apache.org</code> and ensure that the finger print of 
your public key is correct.</p>
+
+<h3>Attend Key Signing Party (Apache web of trust)</h3>
+
+<p>It is strongly advised that the contributor attend a key signing party at 
an Apache event, in order that other Apache committers/members can in person 
verify their identity against the key. The process for this is described <a 
href="http://www.apache.org/dev/release-signing.html#key-signing-party";>here</a>
 and <a href="http://wiki.apache.org/apachecon/PgpKeySigning";>here</a>.</p>
 
 <h2>Update Maven Settings file (<code>~/.m2/settings.xml</code>)</h2>
 

Modified: websites/staging/isis/trunk/content/contributors/release-process.html
==============================================================================
--- websites/staging/isis/trunk/content/contributors/release-process.html 
(original)
+++ websites/staging/isis/trunk/content/contributors/release-process.html Tue 
Nov 27 22:51:00 2012
@@ -400,6 +400,8 @@ Ignore any missing license warnings for 
 
 <p>In order to prepare a release, you must have a public/private key pair, and 
have configured Maven.  See <a 
href="release-process-release-manager-prereqs.html">release manager 
prerequisites</a> for more details.</p>
 
+<p>... in progress ...</p>
+
 
 
       </div>


Reply via email to