Client Side Authentication with Certificates applet with client authentify

i want to implemet a "Client Side Authentication with Certificates" over https with tomcat5,jdk14.

i use OpenSSL to set up CA and server certificates.

All certification pass fine and application works with clientAuth="false" setting in tomcat with configuration:

==================================================================

<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"

port="8443" minProcessors="5" maxProcessors="75"

enableLookups="true"

acceptCount="100" debug="1" scheme="https" secure="true"

useURIValidationHack="false" disableUploadTimeout="true"

compression="on">

<Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory"

clientAuth="true" protocol="TLS" keystorePass="changeit"

keystoreFile="C:/Documents and Settings/Administrator/server.ks"/>

</Connector>

====================================================================

when i set clientAuth="true", no standalone applet or any from a signed jar is starting.

Any other jsp,html,js,servelet still work fine.

I modify also java.policy and java.security to grant all security permision.

I would like to mention that Exception rise with any applet,no mater if is a empty applet or some with code like :

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");

I got only this error when applet shuld init,no mater what settings:

Nov 26, 2003 6:55:38 PM sun.plugin.usability.PluginLogger log

INFO: Loaded certificates from JPI session certificate store

java.net.SocketException: Software caused connection abort: socket write error

at java.net.SocketOutputStream.socketWrite0(Native Method)

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at com.sun.net.ssl.internal.ssl.OutputRecord.a(DashoA6275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)

at com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA6275)

at com.sun.net.ssl.internal.ssl.SunJSSE_az.j(DashoA6275)

at com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA6275)

at com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA6275)

at com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA6275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(DashoA6275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(DashoA6275)

at sun.net.www.protocol.https.HttpsClient.afterConnect(DashoA6275)

at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.setNewClient(DashoA6275)

at sun.net.www.protocol.https.PluginDelegateHttpsURLConnection.superConnect(PluginDelegateHttpsURLConnection.java:292)

at sun.net.www.protocol.https.PluginDelegateHttpsURLConnection.access$000(PluginDelegateHttpsURLConnection.java:42)

at sun.net.www.protocol.https.PluginDelegateHttpsURLConnection$1.run(PluginDelegateHttpsURLConnection.java:112)

at java.security.AccessController.doPrivileged(Native Method)

at sun.net.www.protocol.https.PluginDelegateHttpsURLConnection.connect(PluginDelegateHttpsURLConnection.java:107)

at sun.net.www.protocol.https.PluginDelegateHttpsURLConnection.getInputStream(PluginDelegateHttpsURLConnection.java:306)

at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(DashoA6275)

at sun.plugin.net.protocol.http.HttpUtils.followRedirects(HttpUtils.java:39)

at sun.plugin.cache.CachedJarLoader.isUpToDate(CachedJarLoader.java:251)

at sun.plugin.cache.CachedJarLoader.loadFromCache(CachedJarLoader.java:153)

at sun.plugin.cache.CachedJarLoader.load(CachedJarLoader.java:124)

at sun.plugin.cache.JarCache.get(JarCache.java:172)

at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(CachedJarURLConnection.java:93)

at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(CachedJarURLConnection.java:78)

at sun.misc.URLClassPath$JarLoader.getJarFile(URLClassPath.java:580)

at sun.misc.URLClassPath$JarLoader.<init>(URLClassPath.java:541)

at sun.misc.URLClassPath$3.run(URLClassPath.java:319)

at java.security.AccessController.doPrivileged(Native Method)

at sun.misc.URLClassPath.getLoader(URLClassPath.java:308)

at sun.misc.URLClassPath.getLoader(URLClassPath.java:285)

at sun.misc.URLClassPath.getResource(URLClassPath.java:155)

at java.net.URLClassLoader$1.run(URLClassLoader.java:190)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:186)

at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:134)

at sun.plugin.security.PluginClassLoader.findClass(PluginClassLoader.java:168)

at java.lang.ClassLoader.loadClass(ClassLoader.java:299)

at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:114)

at java.lang.ClassLoader.loadClass(ClassLoader.java:255)

at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:501)

at sun.applet.AppletPanel.createApplet(AppletPanel.java:566)

at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1775)

at sun.applet.AppletPanel.runLoader(AppletPanel.java:495)

at sun.applet.AppletPanel.run(AppletPanel.java:292)

at java.lang.Thread.run(Thread.java:536)

WARNING: error reading https://p01:8443/cert/utente.jar from cache.

Nov 26, 2003 6:55:42 PM sun.plugin.usability.PluginLogger log

INFO: WARNING: error reading https://p01:8443/cert/utente.jar from cache.

Downloading https://p01:8443/cert/utente.jar to cache

Nov 26, 2003 6:55:42 PM sun.plugin.usability.PluginLogger log

INFO: Downloading https://p01:8443/cert/utente.jar to cache

Loading Root CA certificates from C:\PROGRA~1\Java\J2RE14~1.1_0\lib\security\cacerts

Nov 26, 2003 6:55:43 PM sun.plugin.usability.PluginLogger log

INFO: Loading Root CA certificates from C:\PROGRA~1\Java\J2RE14~1.1_0\lib\security\cacerts

Loaded Root CA certificates from C:\PROGRA~1\Java\J2RE14~1.1_0\lib\security\cacerts

if anyone has encounted same problem please post a reply.

[6429 byte] By [xflowa] at [2007-9-29 17:44:36]
# 1

Just a stab in the dark here.

I've seen trouble with Tomcat and client certificates/authentication in the past. You may need to import the CA trust certs into the cacerts keystore in the JRE directory that is running Tomcat. I'm not sure how you go about pointing Tomcat to use a 'Trustore' other than the one that ships in the JRE. The default password for that keystore is "changeit"

Hope that gets it.

ejja at 2007-7-15 16:48:26 > top of Java-index,Security,Java Secure Socket Extension (JSSE)...
# 2

my problem is not importing CA cert into tomcat this step is passed fine application run over https jsp,html and servlets, the problem is that: only applets won't run over https:8443 when clientauth=true

any way i chose a compromise solution by calling applets over http:8080 with full url specified in codebase from another directory,and securing default application directory.

xflowa at 2007-7-15 16:48:26 > top of Java-index,Security,Java Secure Socket Extension (JSSE)...
# 3

I run a serlvet using jsdk1.2 in a system........

But clients who r accessing this site.. some are able to go through ..

but some people who r in our LAN but at different places couldnt conect to serlvet.....

and they get the followwing errror

can yu help me in solving the problemmmmmmmm...(mail me to vijai_tata @ yahoo.com )

java.net.SocketException: Software caused connection abort: socket write error

at java.net.SocketOutputStream.socketWrite0(Native Method)

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at sun.servlet.http.HttpOutputStream.writeOut(HttpOutputStream.java:483)

at sun.servlet.http.HttpOutputStream.flushBytes(HttpOutputStream.java:35

7)

at sun.servlet.http.HttpOutputStream.flush(HttpOutputStream.java:343)

at sun.servlet.http.HttpOutputStream.finish(HttpOutputStream.java:181)

at sun.servlet.http.HttpOutputStream.close(HttpOutputStream.java:421)

at sun.servlet.http.HttpResponse.finish(HttpResponse.java:338)

at sun.servlet.http.HttpServerHandler.handleConnection(HttpServerHandler

.java:133)

at sun.servlet.http.HttpServerHandler.run(HttpServerHandler.java:90)

at java.lang.Thread.run(Thread.java:534)

vijai-india-Help_mea at 2007-7-15 16:48:26 > top of Java-index,Security,Java Secure Socket Extension (JSSE)...