我可以在运行我的小程序之前检查 Java 小程序证书是否受信任吗?



我在网站上有一个签名的小程序。 因此,将显示 Java 安全性对话框,用户需要向小程序授予权限,然后才能完成其工作。 我想做的是:

  • 我希望网站解释用户的安全对话框在它出现之前。 该页面将在div中显示一些解释文本,几秒钟后,安全性对话框将出现。
  • 如果用户已在上一个会话中允许该证书,则应只需运行小程序,无需任何额外内容对话。

问题是,一旦小程序嵌入到页面中,就会出现安全对话框。 我可以延迟嵌入,但是无法从小程序本身检查它的权限,因为它需要在加载之前执行此操作。

也许我可以加载第二个不可见运行的一般小程序,并检查权限。 但是我该怎么做呢? 是否有任何 Java 类可以检查证书是否已被客户端信任?

谢谢。

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

  1. 使用隐藏的小程序下载您的 JAR 并验证其证书,就像小程序查看器一样。 您可以使用java.security.cert包手动执行此操作。 弄清楚如何做到这一点的最好方法是JarSigner源代码,尤其是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) 在 (2) 中创建的 Cookie 中的存储结果。

我没有考虑太多,所以可能有更好的方法。 祝你好运,回发!

相关内容

  • 没有找到相关文章

最新更新