在运行我的applet之前,我可以检查Java applet证书是否可信吗?

时间:2011-05-04 19:20:15

标签: java security user-interface applet certificate

我在网站上有一个已签名的小程序。因此,将出现Java安全性对话框,并且用户需要在applet工作之前向applet授予权限。我想做的是:

  • 我希望网站解释一下 安全对话框给用户 在它出现之前。页面会 在div中显示一些解释文本, 几秒后,安全 对话框将出现。
  • 如果用户已在之前的会话中允许该证书,则应该 只需运行applet即可 对话框。

问题是,只要applet嵌入页面,就会出现安全对话框。我可以延迟嵌入,但是没有办法从applet本身检查它的权限,因为它需要在加载之前完成。

也许我可以加载一个无形运行的第二个普通applet,并检查权限。但是我该怎么做呢?是否有任何Java类可以检查客户端是否信任证书?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以以编程方式检查JAR文件的证书和签名,就像JVM在加载applet时一样。这不容易,但是,至少乍一看,你将不得不这样做:

  1. 使用隐藏的小程序下载您的JAR并验证其证书,例如applet viewer。您可以使用java.security.cert包手动执行此操作。了解如何执行此操作的最佳方法是JarSigner source code,尤其是verifyJar()。类似的东西:

    // download the JAR
    URL url = new URL("jar:http://mywebsite.com/myjar.jar!/");
    JarURLConnection jarConnection = (JarURLConnection)url.openConnection();
    // get the certificates and other security stuff
    CodeSigners[] codeSigners = jarConnection.getJarEntry().getCodeSigners();
    Certificate[] certificates = jarConnection.getJarEntry().getCertificates();
    // verify the signatures
    // don't know the code, but you can analyze JarSigner example at http://download.oracle.com/javase/tutorial/security/toolfilex/rstep2.html
    
  2. 使用LiveConnect(可能是别的?)来设置一个cookie,这样你就知道“如果用户已经在之前的会话中允许了证书”。

  3. 启动您的小程序,可能取决于(1)中创建的Cookie中(1)商店的结果。
  4. 我没想过这么多,所以可能有更好的方法。祝你好运,并回复!