We are running into this problem: exception from the java applet file uploader tool. This is our staging server. Initially, we used a self-signed certificate, and got both the browser warning, and the applet exception. We obtained a valid certificate from inCommon, and that made the browser warning go away, but we still get the applet exception - though the exception message is different - see below for stacktrace.
I imported the inCommon CA certificate into the cacerts file of my local JRE, but that didn't seem to help. Though it's a little unclear to me where the certificate should be imported to affect a java applet run from my browser.
I see that an issue was opened, but not fixed related to this:
https://www.labkey.org/issues/home/Developer/issues/details.view?issueId=7061
Is there a work-around for this? We don't have a problem with our production server that uses a different certificate purchased from Verisign.
Here's the stack trace:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Untrusted Server Certificate Chain
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at org.apache.commons.httpclient.methods.StringRequestEntity.writeRequest(StringRequestEntity.java:146)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at org.labkey.applets.drop.FTPJobQueue.propFind(FTPJobQueue.java:982)
at org.labkey.applets.drop.FTPJobQueue$DavRunnableJob._sendFile(FTPJobQueue.java:440)
at org.labkey.applets.drop.FTPJobQueue$DavRunnableJob$1.run(FTPJobQueue.java:370)
at java.security.AccessController.doPrivileged(Native Method)
at org.labkey.applets.drop.FTPJobQueue$DavRunnableJob.run(FTPJobQueue.java:366)
at org.labkey.applets.drop.FTPJobQueue$MyThreadPoolExecutor$2.call(FTPJobQueue.java:1253)
at org.labkey.applets.drop.FTPJobQueue$Future.run(FTPJobQueue.java:1156)
at org.labkey.applets.drop.FTPJobQueue$MyThreadPoolExecutor$1.run(FTPJobQueue.java:1202)
at java.lang.Thread.run(Unknown Source)
Caused by: java.security.cert.CertificateException: Untrusted Server Certificate Chain
at com.sun.net.ssl.X509TrustManagerJavaxWrapper.checkServerTrusted(Unknown Source)
... 27 more