Author: buildbot
Date: Wed May 2 15:41:20 2012
New Revision: 815453
Log:
Staging update by buildbot for ace
Modified:
websites/staging/ace/trunk/content/ (props changed)
websites/staging/ace/trunk/content/dev-doc/design/using-client-certificates.html
Propchange: websites/staging/ace/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed May 2 15:41:20 2012
@@ -1 +1 @@
-1333075
+1333079
Modified:
websites/staging/ace/trunk/content/dev-doc/design/using-client-certificates.html
==============================================================================
---
websites/staging/ace/trunk/content/dev-doc/design/using-client-certificates.html
(original)
+++
websites/staging/ace/trunk/content/dev-doc/design/using-client-certificates.html
Wed May 2 15:41:20 2012
@@ -153,7 +153,7 @@
<h1>Using client certificate authentication</h1>
<div class="clear"></div>
<div id="content"><p><em>Using two-way SSL as authentication mechanism
in ACE</em></p>
-<p>Revision 0.9, last updated: May 2nd, 2012.</p>
+<p>Revision 1.0, last updated: May 2nd, 2012.</p>
<div class="toc">
<ul>
<li><a href="#introduction">Introduction</a></li>
@@ -168,7 +168,7 @@
</ul>
</div>
<h2 id="introduction">Introduction</h2>
-<p>One-way SSL authentication is used to let a client verify the identity of
the server it is communicating with. The server itself does not verify the
identity of the client. In two-way SSL authentication, a client first verifies
the identity of the server after which the server identifies the client. This
way, the identity of both the client and server can be established allowing a
trust relation can be created.<br />
+<p>One-way SSL authentication is used to let a client verify the identity of
the server it is communicating with. The server itself does not verify the
identity of the client. In two-way SSL authentication, a client first verifies
the identity of the server after which the server identifies the client. This
way, the identity of both the client and server can be established allowing a
trust relation to be created.<br />
This article describes how to configure the ACE server and the management
agent(s) in such way that they use two-way SSL authentication. The remainder of
this article assumes the reader has basic knowledge of the principles behind
ACE, and has basic knowledge about creating and using certificates. For this
article, the latest code of ACE (0.8.1-SNAPSHOT, rev.1332609) was used.</p>
<h2 id="outline">Outline</h2>
<p>As described in detail in [1], there are multiple communication paths that
can (and need) to be secured. For two-way SSL authentication, several scenarios
can be identified:</p>
@@ -198,7 +198,7 @@ The details on how to create a self-sign
<p><em>Note to double check the paths to both files, as there will not be
printed any error in case one of them points to an incorrect file!</em></p>
-<p>For the ACE server, the configuration is provided by means of a
property-file called <tt>platform.properties</tt>. Similar as the management
agent, we should add some additional properties to it:</p>
+<p>For the ACE server, the configuration is provided by means of a
property-file called <tt>platform.properties</tt>. Similar to the management
agent, we should add some additional properties to it:</p>
<div class="codehilite"><pre><span
class="na">-Dorg.osgi.service.http.port.secure</span><span
class="o">=</span><span class="s">8443</span>
<span class="na">-Dorg.apache.felix.https.enable</span><span
class="o">=</span><span class="s">true</span>
<span class="na">-Dorg.apache.felix.https.truststore</span><span
class="o">=</span><span class="s">/path/to/truststore</span>
@@ -209,7 +209,7 @@ The details on how to create a self-sign
</pre></div>
-<p>This will not only ensure that the Jetty container inside ACE will obtain
the correct keystore and truststore and start a listener on port <tt>8443</tt>,
but also mandates that all clients <strong>must</strong> provide a certificate
upon connecting (as denoted by the last property). Without this, client that do
not offer a client certificate will simply be accepted as well, hence resulting
in only one-way SSL authentication.<br />
+<p>This will not only ensure that the Jetty container inside ACE will obtain
the correct keystore and truststore and start a listener on port <tt>8443</tt>,
but also mandates that all clients <strong>must</strong> provide a certificate
upon connecting (as denoted by the last property). Without this, clients that
do not offer a certificate will simply be accepted as well, hence resulting in
only one-way SSL authentication.<br />
</p>
<p>In order to secure all internal communication paths as well, we need to
specify some additional properties in <tt>platform.properties</tt>:</p>
<div class="codehilite"><pre><span
class="na">-Djavax.net.ssl.keyStore</span><span class="o">=</span><span
class="s">/path/to/keystore-server</span>
@@ -258,6 +258,8 @@ Note that in order to let <strong>all</s
<dd>The user should have the same name as the common name of the certificate,
for example, <tt>localhost</tt> or <tt>10.0.1.16</tt>;</dd>
<dt>I've enabled two-way SSL authentication, but it doesn't work!</dt>
<dd>There can be many reasons for this, like, can the truststore and keystore
files be loaded (<em>no warnings or errors will be printed for this!</em>), or,
is the name of the certificate matching the name of the host, or � In
general, if it doesn't work, one should enable SSL-debugging in Java by adding
<tt>-Djavax.net.debug=ssl</tt> as system property. This will print
<em>lots</em> of information about the keystore and truststore, the
communication itself as well as detailed error messages. Also, the
authentication parts in ACE provide lots of debugging information, logged at
<tt>DEBUG</tt> level.</dd>
+<dt>What if my target runs on a machine with a dynamic IP address? Can I still
use client certificates for authentication?</dt>
+<dd>Not directly. Java uses the common name of the certificate and
<em>assumes</em> this to be a valid, resolvable, hostname. If not, it will fail
to accept the certificate as being valid. In the near future, ACE should <a
href="https://issues.apache.org/jira/browse/ACE-271">support this
functionality</a>.</dd>
</dl>
<h2 id="references">References</h2>
<ol>