ユーザーのPCからSDカードデータを読み取るために使用するJavaアプレットがあります。アプレットは、ログインしたWebサイトにあります。Webサイトにログインするには、次の手順を実行する必要があります。ブラウザ証明書を使用します。ログインすると、SDカードのダウンロードページに移動し、アプレットが初期化され、カードデータが読み取られ、ページ上のJavaScriptに送信されます。
私が今抱えている問題は、ブラウザにJava 8をインストールしてから、アプレットがロードされないことです。具体的には、どのバージョンのIE(テスト済み8、9、10、11)。Firefoxでは正常に動作します。Chromeは試していません。
同様の問題を抱えている人は他にいません。比較的新しいからかもしれません。誰かがこれが起こっている理由を知っていて、それを修正する方法を知っていますか?
IE8のJavaコンソールには、関連性があるように見えるスタックトレースがあります。興味深い部分がいくつかあります。
javax.net.ssl.SSLHandshakeException: Error signing certificate verify
...
Caused by: Java.security.InvalidKeyException: No installed provider supports this key: com.Sun.deploy.security.MSCryptoRSAPrivateKey
...
com.Sun.deploy.net.FailedDownloadException: Unable to load resource: https://xdc-fqq02.example.com/cardtocloud/cardtocloud.jnlp
編集:ここに追加情報があります。アプレットは、OpenSSL1.0.1iを使用する別のサーバーで正しく機能します。アプレットは、OpenSSL1.0.0mを備えた元のサーバーでは機能しません。
これが完全なログです。スタックトレースはFirefoxのログに表示されません。
Java Plug-in 11.25.2.18
Using JRE version 1.8.0_25-b18 Java HotSpot(TM) Client VM
User home directory = C:\Users\codyj
----------------------------------------------------
c: clear console window
f: finalize objects on finalization queue
g: garbage collect
h: display this help message
l: dump classloader list
m: print memory usage
o: trigger logging
q: hide console
r: reload policy configuration
s: dump system and deployment properties
t: dump thread list
v: dump thread stack
x: clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------
network: Created version ID: 1.8.0.25
network: Created version ID: 1.8
network: Created version ID: 8.0.25
network: Connecting https://xdc-fqq02.example.com/cardtocloud/cardtocloud.jnlp with proxy=DIRECT
network: Connecting http://xdc-fqq02.example.com:443/ with proxy=DIRECT
security: Loading SSL Root CA certificates from C:\Program Files (x86)\Java\jre1.8.0_25\lib\security\cacerts
security: Loaded SSL Root CA certificates from C:\Program Files (x86)\Java\jre1.8.0_25\lib\security\cacerts
security: Obtain certificate collection in SSL Root CA certificate store
security: Obtain certificate collection in SSL Root CA certificate store
security: Loading certificates from Deployment session certificate store
security: Loaded certificates from Deployment session certificate store
security: Loading certificates from Internet Explorer ROOT certificate store
security: Loaded certificates from Internet Explorer ROOT certificate store
security: Loading certificates from Internet Explorer DISALLOWED certificate store
security: Loaded certificates from Internet Explorer DISALLOWED certificate store
security: Loaded blacklisted.certs file: C:\Users\codyj\AppData\LocalLow\Sun\Java\Deployment\security\blacklisted.certs
security: SHA-256Certificate finger print: F94D2C80A1172FC591F964D4DC0E8BAF493C92FE678B6B8B07D362607EBD33AB
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
security: SHA-256Certificate finger print: 0855414AF5F5FD7E264F8B002A39CCED67E5952E89B61B680CC847BAA34944DE
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
security: SHA-256Certificate finger print: 0AE1484292B20EE696D4593DBE46F91479F8DAD58FC057CFD52FA3FA8FB3CE4B
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
security: Checking if SSL certificate is in Deployment permanent certificate store
security: Loading certificates from Internet Explorer ROOT certificate store
security: Loaded certificates from Internet Explorer ROOT certificate store
security: Saving certificates in Deployment session certificate store
security: Saved certificates in Deployment session certificate store
javax.net.ssl.SSLHandshakeException: Error signing certificate verify
at Sun.security.ssl.Alerts.getSSLException(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at Sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at Sun.security.ssl.ClientHandshaker.serverHelloDone(Unknown Source)
at Sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at Sun.security.ssl.Handshaker.processLoop(Unknown Source)
at Sun.security.ssl.Handshaker.process_record(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at Sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.AccessController.doPrivileged(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.Sun.deploy.net.HttpUtils.followRedirects(Unknown Source)
at com.Sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.Sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
at com.Sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.Sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
at com.Sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.Sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.Sun.deploy.model.ResourceProvider.getResource(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory._buildDescriptor(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at Sun.plugin2.applet.JNLP2Manager.initialize(Unknown Source)
at Sun.plugin2.main.client.PluginMain.initManager(Unknown Source)
at Sun.plugin2.main.client.PluginMain.access$200(Unknown Source)
at Sun.plugin2.main.client.PluginMain$2.run(Unknown Source)
at Java.lang.Thread.run(Unknown Source)
Caused by: Java.security.InvalidKeyException: No installed provider supports this key: com.Sun.deploy.security.MSCryptoRSAPrivateKey
at Java.security.Signature$Delegate.chooseProvider(Unknown Source)
at Java.security.Signature$Delegate.engineInitSign(Unknown Source)
at Java.security.Signature.initSign(Unknown Source)
at Sun.security.ssl.HandshakeMessage$CertificateVerify.<init>(Unknown Source)
... 34 more
network: Connecting https://xdc-fqq02.example.com/cardtocloud/cardtocloud.jnlp with proxy=DIRECT
network: Connecting http://xdc-fqq02.example.com:443/ with proxy=DIRECT
security: Obtain certificate collection in SSL Root CA certificate store
security: Obtain certificate collection in SSL Root CA certificate store
security: Loading certificates from Deployment session certificate store
security: Loaded certificates from Deployment session certificate store
security: SHA-256Certificate finger print: F94D2C80A1172FC591F964D4DC0E8BAF493C92FE678B6B8B07D362607EBD33AB
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
security: SHA-256Certificate finger print: 0855414AF5F5FD7E264F8B002A39CCED67E5952E89B61B680CC847BAA34944DE
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
security: SHA-256Certificate finger print: 0AE1484292B20EE696D4593DBE46F91479F8DAD58FC057CFD52FA3FA8FB3CE4B
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
javax.net.ssl.SSLHandshakeException: Error signing certificate verify
at Sun.security.ssl.Alerts.getSSLException(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at Sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at Sun.security.ssl.ClientHandshaker.serverHelloDone(Unknown Source)
at Sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at Sun.security.ssl.Handshaker.processLoop(Unknown Source)
at Sun.security.ssl.Handshaker.process_record(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at Sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.AccessController.doPrivileged(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.Sun.deploy.net.HttpUtils.followRedirects(Unknown Source)
at com.Sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.Sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.Sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source)
at com.Sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.Sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
at com.Sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.Sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.Sun.deploy.model.ResourceProvider.getResource(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory._buildDescriptor(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at Sun.plugin2.applet.JNLP2Manager.initialize(Unknown Source)
at Sun.plugin2.main.client.PluginMain.initManager(Unknown Source)
at Sun.plugin2.main.client.PluginMain.access$200(Unknown Source)
at Sun.plugin2.main.client.PluginMain$2.run(Unknown Source)
at Java.lang.Thread.run(Unknown Source)
Caused by: Java.security.InvalidKeyException: No installed provider supports this key: com.Sun.deploy.security.MSCryptoRSAPrivateKey
at Java.security.Signature$Delegate.chooseProvider(Unknown Source)
at Java.security.Signature$Delegate.engineInitSign(Unknown Source)
at Java.security.Signature.initSign(Unknown Source)
at Sun.security.ssl.HandshakeMessage$CertificateVerify.<init>(Unknown Source)
... 35 more
com.Sun.deploy.net.FailedDownloadException: Unable to load resource: https://xdc-fqq02.example.com/cardtocloud/cardtocloud.jnlp
at com.Sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.Sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
at com.Sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.Sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.Sun.deploy.model.ResourceProvider.getResource(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory._buildDescriptor(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at Sun.plugin2.applet.JNLP2Manager.initialize(Unknown Source)
at Sun.plugin2.main.client.PluginMain.initManager(Unknown Source)
at Sun.plugin2.main.client.PluginMain.access$200(Unknown Source)
at Sun.plugin2.main.client.PluginMain$2.run(Unknown Source)
at Java.lang.Thread.run(Unknown Source)
Caused by:
javax.net.ssl.SSLHandshakeException: Error signing certificate verify
at Sun.security.ssl.Alerts.getSSLException(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at Sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at Sun.security.ssl.ClientHandshaker.serverHelloDone(Unknown Source)
at Sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at Sun.security.ssl.Handshaker.processLoop(Unknown Source)
at Sun.security.ssl.Handshaker.process_record(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at Sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at Sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.AccessController.doPrivileged(Unknown Source)
at Sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.Sun.deploy.net.HttpUtils.followRedirects(Unknown Source)
at com.Sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.Sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.Sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source)
at com.Sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.Sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
at com.Sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.Sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.Sun.deploy.model.ResourceProvider.getResource(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory._buildDescriptor(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.Sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at Sun.plugin2.applet.JNLP2Manager.initialize(Unknown Source)
at Sun.plugin2.main.client.PluginMain.initManager(Unknown Source)
at Sun.plugin2.main.client.PluginMain.access$200(Unknown Source)
at Sun.plugin2.main.client.PluginMain$2.run(Unknown Source)
at Java.lang.Thread.run(Unknown Source)
Caused by: Java.security.InvalidKeyException: No installed provider supports this key: com.Sun.deploy.security.MSCryptoRSAPrivateKey
at Java.security.Signature$Delegate.chooseProvider(Unknown Source)
at Java.security.Signature$Delegate.engineInitSign(Unknown Source)
at Java.security.Signature.initSign(Unknown Source)
at Sun.security.ssl.HandshakeMessage$CertificateVerify.<init>(Unknown Source)
... 35 more
network: Connecting https://xdc-fqq02.example.com/cardtocloud/cardtocloud.jnlp with proxy=DIRECT
network: Connecting http://xdc-fqq02.example.com:443/ with proxy=DIRECT
security: Obtain certificate collection in SSL Root CA certificate store
security: Obtain certificate collection in SSL Root CA certificate store
security: Loading certificates from Deployment session certificate store
security: Loaded certificates from Deployment session certificate store
security: SHA-256Certificate finger print: F94D2C80A1172FC591F964D4DC0E8BAF493C92FE678B6B8B07D362607EBD33AB
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
security: SHA-256Certificate finger print: 0855414AF5F5FD7E264F8B002A39CCED67E5952E89B61B680CC847BAA34944DE
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
security: SHA-256Certificate finger print: 0AE1484292B20EE696D4593DBE46F91479F8DAD58FC057CFD52FA3FA8FB3CE4B
security: Checking if certificate is in Internet Explorer DISALLOWED certificate store
basic: JNLP2Manager.initialize(): JNLP not available: /cardtocloud/cardtocloud.jnlp
basic: exception: null.
Java.lang.NullPointerException
at Sun.plugin2.applet.JNLP2Manager.getAppInfo(Unknown Source)
at Sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at Java.lang.Thread.run(Unknown Source)
Ignored exception: Java.lang.NullPointerException
basic: Dialog type is not candidate for embedding
security: Reset deny session certificate store
Javaコンソールで「TLS1.2」をオフにしてみましたか?
Java8はデフォルトでTLS1.2を使用しているようです。そのため、サーバーがTLS 1.2をサポートしていない場合は、前述と同じエラーが発生する可能性があります。
https://blogs.Oracle.com/Java-platform-group/entry/Java_8_will_use_tls
以下のコマンドをJavaコントロールパネルに追加してください。Java--view--inruntimeパラメーターに移動して、このコマンドを貼り付けてください。
-Djava.net.preferIPv4Stack=true.
それは問題なく私のために働いています。