I've just created this issue on this topic: 
http://restlet.tigris.org/issues/show_bug.cgi?id=977

Bruno.

Bruno Harbulot wrote:
> Hi Mikis,
> 
> This definitely sounds like a bug. I'll try to address it shortly. 
> Meanwhile, I'd suggest working around it by using another connector if 
> you can (for example, but putting the org.restlet.ext.net or 
> org.restlet.ext.httpclient on the classpath if you can).
> 
> I suspect that these connectors may trigger similar problems with 
> "$HOME/.keystore" since we've introduced client-side certificate support 
> (in 2.0-M6).
> 
> Jerome, Thierry and the rest of the community, any thoughts about 
> removing the default value of "$HOME/.keystore" when trying to load a 
> keystore (removing it for both client and server side would be easier)?
> 
> Essentially, this would mean that Restlet no longer assumes that the 
> keystore (what contains the local certificate and private key) is in 
> "$HOME/.keystore" by default, and thus users would have to specify it 
> anyway (either via API or via the usual system property). This would be 
> consistent with the (absence of) default value in the JSSE reference 
> guide 
> <http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#Customization>.
> 
> I'm only talking about the _keystore_, not the _truststore_ (those 
> default values are specified and would remain the same: either default 
> values in line with the JSSE ref guide, values specified by the system 
> properties, or values specified via the Restlet API -- 
> SslContextFactories/connector parameters).
> 
> 
> Best wishes,
> 
> Bruno.
> 
> Mikis Seth Sørensen wrote:
>> Hi Bruno
>>
>> If the keystore isn't found an java.io.FileNotFoundException, see stacktrace
>>  <i>C:\Users\mikis\.keystore (Den angivne fil blev ikke fundet)
>>     at java.io.FileInputStream.open(Native Method)
>>     at java.io.FileInputStream.<init>(FileInputStream.java:106)
>>     at java.io.FileInputStream.<init>(FileInputStream.java:66)
>>     at 
>> org.restlet.engine.http.StreamClientHelper.createSecureSocketFactory(StreamClientHelper.java:180)
>>     at 
>> org.restlet.engine.http.StreamClientHelper.createSocketFactory(StreamClientHelper.java:255)"<i>
>>
>> In case of a invalid password a java.io.IOException is thrown:
>> <i>java.io.IOException: Keystore was tampered with, or password was 
>> incorrect
>>     at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:771)
>>     at 
>> sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
>>     at java.security.KeyStore.load(KeyStore.java:1185)
>>     at 
>> org.restlet.engine.http.StreamClientHelper.createSecureSocketFactory(StreamClientHelper.java:187)<i>
>>
>> what is a bit fishy here is that a connection is actually established, 
>> even though the certificate hasn't been validated, very bold.
>>
>> If the certificate isn't found in the keystore a
>> <i>java.security.UnrecoverableKeyException: Cannot recover key<i>
>> is thrown.
>>
>> So it lookes like this is the cause for the problem. A more precise 
>> error message would have been something like 'Can not find certificate 
>> XXX in keystore YYYY', which I'll be adding to my application.
>>
>> ~Mikis 
>>
> 
> ------------------------------------------------------
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2427116
>

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2430258

Reply via email to