0

開発/テスト サイトでは実行されていませんが、運用サイトでは正常に動作する Web アプリケーションにアプレットがあります。この問題は、Mac Lion のブラウザーからサイトにアクセスしている場合にのみ発生します。MSWin クライアントから実行されているブラウザー (IE、FF、Safari、Opera) には問題はありません。

開発サイトと本番サイトの違いは、本番サイトには SSL 用に購入したサイト証明書があるのに対し、開発サイトには自己署名証明書があることです。SSL を使用しない場合、アプレットは開発サイトでも正常に動作します。

アプリケーションは IIS 7 によって提供されています。Java プラグインが有効になっています (そうしないと、開発ボックスで http または運用ボックスで ssl を使用してアプレットを実行できません)。

アプレット jar 自体は、購入した証明書で署名されています。Web ページは、JavaScript を使用してアプレットと対話します。

HTML ページには、アプレットの次のコードが含まれています。

    <object name="Previewer"
            class="java-applet" 
            classid="java:com.[omitted].template.TemplateViewer.class" 
            type="application/x-java-applet"
            archive="../Template/tv/TemplateViewer.jar" 
            height="425" width="270">
        <param name="MAYSCRIPT" value="true" />
        <param name="scriptable" value="true" />
        <param name="archive" value="../Template/tv/TemplateViewer.jar" />
        <!-- following parameters are used by the applet itself -->
        <param name="TEMPLATE" value="[url omitted]" />
        <param name="VERSION" value="1.7" />
        <param name="AREA" value="AreaName" />
        <param name="CUSTOMIZABLE" value="Y" />
        <param name="BACKGROUND" value="[url omitted]" />
        <param name="SHOWDROPDOWN" value="false" />
    </object> 

Java コンソールは、スタック トレースを提供します (質問の最後にリストされています)。

ClassNotFound 例外がアプレット クラス ローダーによってスローされているのを確認しました。これは、「署名アルゴリズムの不一致」を伴う CertificateException が原因のようです。

数時間の Google の後、私は空白になり、ここで「既に回答がある可能性のある質問」と「同様の質問」をすべて確認しましたが、何の啓発もありませんでした。

私が推測できるのは、一部のモバイル デバイスが SSL によって提供されるメディアを提供することに敏感であるのと同様に、自己署名証明書を使用してサイトにアクセスすることによって、この問題が何らかの原因で発生していることです。

今質問:

  1. この問題の原因は何ですか?

  2. それを修正するために何ができますか?


スタック トレースを含むコンソール ログは次のとおりです。

    Java Plug-in 1.6.0_26
    Using JRE version 1.6.0_26-b03-383-11A511c Java HotSpot(TM) 64-Bit Server VM User home directory = /Users/[omitted]

    ----------------------------------------------------
    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>
    ----------------------------------------------------

    security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.apple.mrj.,com.apple.jdirect.,com.apple.audio.jdirect.,quicktime.internal.,com.sun.medialib.mlib.
    security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.apple.mrj.,com.apple.jdirect.,com.apple.audio.jdirect.,quicktime.internal.,com.sun.medialib.mlib.,com.sun.javaws
    security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.apple.mrj.,com.apple.jdirect.,com.apple.audio.jdirect.,quicktime.internal.,com.sun.medialib.mlib.,com.sun.javaws
    security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.apple.mrj.,com.apple.jdirect.,com.apple.audio.jdirect.,quicktime.internal.,com.sun.medialib.mlib.,com.sun.javaws,com.sun.deploy
    security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.apple.mrj.,com.apple.jdirect.,com.apple.audio.jdirect.,quicktime.internal.,com.sun.medialib.mlib.,com.sun.javaws,com.sun.deploy
    security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.apple.mrj.,com.apple.jdirect.,com.apple.audio.jdirect.,quicktime.internal.,com.sun.medialib.mlib.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
    security: property package.definition value null
    security: property package.definition new value com.sun.javaws
    security: property package.definition value com.sun.javaws
    security: property package.definition new value com.sun.javaws,com.sun.deploy
    security: property package.definition value com.sun.javaws,com.sun.deploy
    security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp
    security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.apple.mrj.,com.apple.jdirect.,com.apple.audio.jdirect.,quicktime.internal.,com.sun.medialib.mlib.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
    security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,apple.,com.apple.mrj.,com.apple.jdirect.,com.apple.audio.jdirect.,quicktime.internal.,com.sun.medialib.mlib.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
    security: property package.definition value com.sun.javaws,com.sun.deploy,com.sun.jnlp
    security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
    basic: Added progress listener: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@2de12f6d
    basic: Plugin2ClassLoader.addURL parent called for https://[URL omitted]/Template/tv/TemplateViewer.jar
    network: Cache entry not found [url: https://[URL omitted]/Template/tv/TemplateViewer.jar, version: null]
    network: Connecting https://[URL omitted]/Template/tv/TemplateViewer.jar with proxy=DIRECT
    network: Connecting http://[URL omitted]:443/ with proxy=DIRECT
    javax.net.ssl.SSLProtocolException: Signature algorithm mismatch
            at com.sun.net.ssl.internal.ssl.HandshakeMessage$CertificateMsg.<init>(HandshakeMessage.java:412)
            at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136)
            at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
            at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1149)
            at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
            at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
            at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
            at sun.plugin.PluginURLJarFileCallBack.downloadJAR(PluginURLJarFileCallBack.java:81)
            at sun.plugin.PluginURLJarFileCallBack.access$000(PluginURLJarFileCallBack.java:48)
            at sun.plugin.PluginURLJarFileCallBack$2.run(PluginURLJarFileCallBack.java:150)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.plugin.PluginURLJarFileCallBack.retrieve(PluginURLJarFileCallBack.java:127)
            at sun.net.www.protocol.jar.URLJarFile.retrieve(URLJarFile.java:186)
            at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:50)
            at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70)
            at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
            at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(CachedJarURLConnection.java:201)
            at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(CachedJarURLConnection.java:145)
            at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(CachedJarURLConnection.java:91)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(DeployURLClassPath.java:752)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$800(DeployURLClassPath.java:631)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(DeployURLClassPath.java:698)
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(DeployURLClassPath.java:690)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader.<init>(DeployURLClassPath.java:652)
            at com.sun.deploy.security.DeployURLClassPath$3.run(DeployURLClassPath.java:400)
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sun.deploy.security.DeployURLClassPath.getLoader(DeployURLClassPath.java:389)
            at com.sun.deploy.security.DeployURLClassPath.getLoader(DeployURLClassPath.java:366)
            at com.sun.deploy.security.DeployURLClassPath.getResource(DeployURLClassPath.java:230)
            at sun.plugin2.applet.Plugin2ClassLoader$2.run(Plugin2ClassLoader.java:966)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Plugin2ClassLoader.java:955)
            at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:134)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:250)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:180)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:240)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:180)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:161)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
            at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:675)
            at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3046)
            at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1498)
            at java.lang.Thread.run(Thread.java:680)
    Caused by: java.security.cert.CertificateException: Signature algorithm mismatch
            at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1737)
            at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:179)
            at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:90)
            at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:305)
            at com.sun.net.ssl.internal.ssl.HandshakeMessage$CertificateMsg.<init>(HandshakeMessage.java:410)
            ... 48 more
    network: Cache entry not found [url: https://[URL omitted]/Template/tv/TemplateViewer.jar, version: null]
    network: Connecting https://[URL omitted]/Template/tv/TemplateViewer.jar with proxy=DIRECT
    network: Connecting http://[URL omitted]:443/ with proxy=DIRECT
    network: Cache entry not found [url: https://[URL omitted]/Template/tv/TemplateViewer.jar, version: null]
    network: Connecting https://[URL omitted]/Template/tv/TemplateViewer.jar with proxy=DIRECT
    network: Connecting http://[URL omitted]:443/ with proxy=DIRECT
    javax.net.ssl.SSLProtocolException: Signature algorithm mismatch
            at com.sun.net.ssl.internal.ssl.HandshakeMessage$CertificateMsg.<init>(HandshakeMessage.java:412)
            at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136)
            at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
            at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1149)
            at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
            at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
            at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
            at sun.plugin.PluginURLJarFileCallBack.downloadJAR(PluginURLJarFileCallBack.java:81)
            at sun.plugin.PluginURLJarFileCallBack.access$000(PluginURLJarFileCallBack.java:48)
            at sun.plugin.PluginURLJarFileCallBack$2.run(PluginURLJarFileCallBack.java:150)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.plugin.PluginURLJarFileCallBack.retrieve(PluginURLJarFileCallBack.java:127)
            at sun.net.www.protocol.jar.URLJarFile.retrieve(URLJarFile.java:186)
            at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:50)
            at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70)
            at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
            at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(CachedJarURLConnection.java:201)
            at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(CachedJarURLConnection.java:145)
            at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(CachedJarURLConnection.java:91)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(DeployURLClassPath.java:752)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$800(DeployURLClassPath.java:631)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(DeployURLClassPath.java:698)
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(DeployURLClassPath.java:690)
            at com.sun.deploy.security.DeployURLClassPath$JarLoader.<init>(DeployURLClassPath.java:652)
            at com.sun.deploy.security.DeployURLClassPath$3.run(DeployURLClassPath.java:400)
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sun.deploy.security.DeployURLClassPath.getLoader(DeployURLClassPath.java:389)
            at com.sun.deploy.security.DeployURLClassPath.getLoader(DeployURLClassPath.java:366)
            at com.sun.deploy.security.DeployURLClassPath.getResource(DeployURLClassPath.java:230)
            at sun.plugin2.applet.Plugin2ClassLoader$2.run(Plugin2ClassLoader.java:966)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Plugin2ClassLoader.java:955)
            at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:134)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:250)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:180)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:161)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
            at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:675)
            at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3046)
            at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1498)
            at java.lang.Thread.run(Thread.java:680)
    Caused by: java.security.cert.CertificateException: Signature algorithm mismatch
            at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1737)
            at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:179)
            at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:90)
            at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:305)
            at com.sun.net.ssl.internal.ssl.HandshakeMessage$CertificateMsg.<init>(HandshakeMessage.java:410)
            ... 46 more
    network: Cache entry not found [url: https://[URL omitted]/Template/tv/TemplateViewer.jar, version: null]
    network: Connecting https://[URL omitted]/Template/tv/TemplateViewer.jar with proxy=DIRECT
    network: Connecting http://[URL omitted]:443/ with proxy=DIRECT
    network: Cache entry not found [url: https://[URL omitted]/Orders/, version: null]
    network: Cache entry not found [url: https://[URL omitted]/Orders/com/[omitted]/template/TemplateViewer.class, version: null]
    network: Connecting https://[URL omitted]/Orders/com/[omitted]/template/TemplateViewer.class with proxy=DIRECT
    network: Connecting http://[URL omitted]:443/ with proxy=DIRECT
    network: Cache entry not found [url: https://[URL omitted]/Orders/com/[omitted]/template/TemplateViewer/class.class, version: null]
    network: Connecting https://[URL omitted]/Orders/com/[omitted]/template/TemplateViewer/class.class with proxy=DIRECT
    network: Connecting http://[URL omitted]:443/ with proxy=DIRECT
    basic: load: class com.[omitted].template.TemplateViewer.class not found.
    Java Plug-in 1.6.0_26
    Using JRE version 1.6.0_26-b03-383-11A511c Java HotSpot(TM) 64-Bit Server VM User home directory = /Users/[omitted] load: class com.[omitted].template.TemplateViewer.class not found.
    java.lang.ClassNotFoundException: com.[omitted].template.TemplateViewer.class
            at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:252)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:250)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:180)
            at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:161)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
            at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:687)
            at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3046)
            at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1498)
            at java.lang.Thread.run(Thread.java:680)
    Exception: java.lang.ClassNotFoundException: com.[omitted].template.TemplateViewer.class
    Ignored exception: java.lang.ClassNotFoundException: com.[omitted].template.TemplateViewer.class
4

1 に答える 1

0

問題の原因を正確に特定することはできませんでしたが、Verisignから30日間の証明書を取得してインストールし、アプレットはその「公式」証明書で正しく動作します。そのため、DEVボックスとUATボックスの証明書を取得中です。

于 2013-01-29T21:21:16.243 に答える