Well, googling a bit, I found that Sun provides a security provider based on smart cards: http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide.html
See http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide.html#Login for how to create a KeyStore from the smart card. On Thu, Feb 21, 2008 at 12:24 PM, Guillaume Nodet <[EMAIL PROTECTED]> wrote: > For SSL, I think the key methods are: > KeyStoreInstance#getKeyManager > KeyStoreInstance#getTrustManager > > Take a look at createSSLServerFactory method in BaseKeystoreManager as this > is > the one that creates the SSL socket using the two methods above. > > At the end, you may have to implement the following interfaces: > javax.net.ssl.X509TrustManager > javax.net.ssl.X509KeyManager > and return your own instances of these interfaces in the two methods > mentioned above. > > > > On Thu, Feb 21, 2008 at 11:40 AM, Sebastian Gomez <[EMAIL PROTECTED]> wrote: > > Hello. > > > > I've been very busy these last weeks therefore I haven't been able to > start > > implementing my patch until now. I made the changes recommended (for > which I > > thank you a lot) but I have come up to a new problem. I'm not sure of the > > scale of the problem, because I'm not sure if I have configured the > > SSLSocket correctly (mostly because of my quite limited knowledge on SSL > > security). I'll tell you what the problem is and lets hope you know where > I > > should be aiming to solve it: > > > > First of all I created a CustomKeystoreManager and a > CustomKeystoreInstance > > class. Then, in the HttpEndpoint I instantiate them in the > > getKeystoreManager() method. They seem to work fine until the > > SSLSocketFactory is created, because when it sends the message, a > > HandshakeException is thrown. Debugging I have seen that the > > CustomKeystoreInstance.getCertificate(String alias) method is never > called, > > so obviously, without the Certificate, the message exchange is never going > > to work. After that, I undid all my changes to see where a normal message > > exchange using a file certificate (*.p12 and *.jks) calls the > > FileKeystoreInstance.getCertificate(String alias) method, but it doesn't > > seem to do it! So my idea of implementing a new getCertificate() method > > looks like it would not work. > > > > Do you have any idea when and where the Certificates are read (i.e the > call > > to getCertificate() or getCertificateChain())? Should I be doing something > > with the certificate before initializing the SSLContext in the > > CustomKeystoreManager.createSSLServerFactory method? > > > > Please help. this problem is blocking my progress in my project. Thanks in > > advance. > > > > Sebastian Gomez. > > > > > > On Thu, Jan 24, 2008 at 1:15 AM, Guillaume Nodet <[EMAIL PROTECTED]> wrote: > > > > > On Jan 23, 2008 6:42 PM, Sebastian Gomez <[EMAIL PROTECTED]> wrote: > > > > > > > Hello again. > > > > > > > > First of all, thanks a lot for helping me resolve this problem I've > > > > encountered. > > > > > > > > I've been trying to locate the part of the code where I should start > > > > implementing my patch but I haven't decided yet. I agree with you on > > > > modifying the getKeystoreManager() method from HttpEndpoint, but I > think > > > I > > > > should rewrite the method instead of overriding it (I understand > > > > overriding > > > > would mean creating a new class extending HttpEndpoint). Do you think > my > > > > assumption is correct or do you really think I should create a new > > > class? > > > > > > > > > Rewriting is the way to go > > > > > > > > > > > > > > > I've thought on the idea of adding a KeystoreManager field to the > > > > HttpEndpoint. My idea would be to add a new sslParameter in the > > > > xbean.xmlfile, but that would mean modifying the > > > > servicemix-http.xsd wouldn't it? Would it be a problem? Doing this > would > > > > allow me to do something like "if (this.getSsl().getKeyStoreManager() > == > > > > null)" in the getKeystoreManager() method. Returning "true" would mean > > > the > > > > parameter has not been specified, so I would let the HttpComponent be > > > > initialized as it has been done until now, but returning "false" would > > > > mean creating and returning a new instance of the specified > > > > KeystoreManager. > > > > Does this make sense to you, or am I missing something out? > > > > > > > > > Yeah, definitely. The servicemix-http schema is generated automatically > > > from the > > > java source code, so adding a getter to the SslParams class will do the > > > trick. > > > > > > > > > > > > > > > > > > Best regards. > > > > > > > > Sebastian Gomez. > > > > > > > > > > > > > > > > > > > > On Jan 21, 2008 8:30 PM, Guillaume Nodet <[EMAIL PROTECTED]> wrote: > > > > > > > > > I think the easiest way would be to add a KeystoreManager field on > the > > > > > HttpEndpoint and override > > > > > the getKeystoreManager() method from HttpEndpoint [1]. > > > > > It doesn't seem you actually need to work with the HttpComponent or > > > > > HttpConfiguration directly. > > > > > > > > > > FYI, the defaut KeystoreManager is retrieved from the HttpComponent > in > > > > the > > > > > doInit() method [2]. > > > > > > > > > > Hopes this helps, > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/HttpEndpoint.java?revision=602826&view=markup > > > > > [2] > > > > > > > > > > > > > > > > > > http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/HttpComponent.java?revision=602826&view=markup > > > > > > > > > > On Jan 21, 2008 8:11 PM, Sebas Gomez <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > Hi. > > > > > > > > > > > > I have decided to create the patch to configure the > KeyStoreInstance > > > > > > directly on the endpoint, and I would be willing to share it, but > I > > > > > think > > > > > > I > > > > > > will need a little orientation. I've been trying to trace > > > > > > the initialization of the http-component, but I haven't been able > to > > > > > find > > > > > > where the KeystoreInstance is created. Would it be possible for > you > > > to > > > > > > point > > > > > > me out where it is done? > > > > > > > > > > > > Thank you. > > > > > > On Jan 21, 2008 4:45 PM, Guillaume Nodet <[EMAIL PROTECTED]> > wrote: > > > > > > > > > > > > > Implementing a KeyStoreInstance manager is the way to go. > > > > > > > Currently, the only way to configure it is to go to the JMX > mbean > > > > > > > associated > > > > > > > with the servicemix-http component and change the > > > > keystoreManagerName > > > > > to > > > > > > a > > > > > > > new entry in the JNDI tree where you would put your own > > > > > implementation. > > > > > > > You'd also have to register it in the conf/jndi.xml > configuration > > > > > file. > > > > > > > This is not very easy, so if you're fancy providing a patch to > > > > > configure > > > > > > > it > > > > > > > on the endpoint directly, i'd be happy to apply it. > > > > > > > > > > > > > > On Jan 18, 2008 2:31 PM, Sebas Gomez <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > > Hi. > > > > > > > > > > > > > > > > Thanks for the quick answer. > > > > > > > > > > > > > > > > I only retieve the certificate from the card, nothing else. I > > > > think > > > > > > the > > > > > > > > easiest way of getting the certificate would be implementing a > > > > > custom > > > > > > > > KeyStoreInstance but I can't find the place in the > configuration > > > > of > > > > > > the > > > > > > > > servicemix-http component where to tell ServiceMix to use it. > I > > > > > > suppose > > > > > > > it > > > > > > > > should be in one of the sslParameters, but I don't know which > > > one. > > > > > > > > > > > > > > > > The other possibility would be to subclass the > servicemix-http, > > > > but > > > > > I > > > > > > > > think > > > > > > > > the easy solution would be the one explained on the paragraph > > > > above. > > > > > > > > > > > > > > > > Would it be possible to implement my custom KeystoreInstance > or > > > > > should > > > > > > I > > > > > > > > be > > > > > > > > thinking of subclassing the component? > > > > > > > > > > > > > > > > Best regards. > > > > > > > > > > > > > > > > Sebastian Gomez > > > > > > > > > > > > > > > > On Jan 18, 2008 1:24 PM, Guillaume Nodet <[EMAIL PROTECTED]> > > > wrote: > > > > > > > > > > > > > > > > > I'm not aware of anything done on this subject. > > > > > > > > > What kind of data do you retrieve from the smartcard and > how ? > > > > > > > > > Do you simply retrieve the certificate ? > > > > > > > > > servicemix-http uses an abstraction on top of a keystore so > > > you > > > > > may > > > > > > be > > > > > > > > > able to implement you own that would delegate calls to the > > > > > smartcard > > > > > > > > > somehow. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > http://svn.apache.org/viewvc/servicemix/smx3/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/security/keystore/KeystoreInstance.java?revision=602826&view=markup > > > > > > > > > > > > > > > > > > On Jan 18, 2008 11:07 AM, Sebas Gomez <[EMAIL PROTECTED]> > > > wrote: > > > > > > > > > > > > > > > > > > > Hello. > > > > > > > > > > > > > > > > > > > > I need to access a web service secured with WS-Security > > > using > > > > a > > > > > > > Smart > > > > > > > > > > Card. > > > > > > > > > > If I had the security certificate in local, I know I could > > > set > > > > > the > > > > > > > > > > http:sslParameters with the path of the keystore and its > > > > > keystore > > > > > > > > > > password, > > > > > > > > > > but this is not the case. > > > > > > > > > > > > > > > > > > > > I suppose I will have to extend either servicemix-http or > > > > > > > > servicemix-cxf > > > > > > > > > > to > > > > > > > > > > support reading smart cards, but I don't know if there is > an > > > > > > easier > > > > > > > > > > workaround. > > > > > > > > > > > > > > > > > > > > Is there anything similar already implemented? If not, I > > > would > > > > > > > > > appreciate > > > > > > > > > > any kind of indication as to what would be the best way to > > > > solve > > > > > > > this > > > > > > > > > > problem. > > > > > > > > > > > > > > > > > > > > Best regards. > > > > > > > > > > > > > > > > > > > > Sebastian Gomez > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > Cheers, > > > > > > > > > Guillaume Nodet > > > > > > > > > ------------------------ > > > > > > > > > Blog: http://gnodet.blogspot.com/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > Cheers, > > > > > > > Guillaume Nodet > > > > > > > ------------------------ > > > > > > > Blog: http://gnodet.blogspot.com/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Cheers, > > > > > Guillaume Nodet > > > > > ------------------------ > > > > > Blog: http://gnodet.blogspot.com/ > > > > > > > > > > > > > > > > > > > > > -- > > > Cheers, > > > Guillaume Nodet > > > ------------------------ > > > Blog: http://gnodet.blogspot.com/ > > > > > > > > > -- > > > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/
