我在网站上有一个签名的小程序。 因此,将显示 Java 安全性对话框,用户需要向小程序授予权限,然后才能完成其工作。 我想做的是:
- 我希望网站解释用户的安全对话框在它出现之前。 该页面将在div中显示一些解释文本,几秒钟后,安全性对话框将出现。
- 如果用户已在上一个会话中允许该证书,则应只需运行小程序,无需任何额外内容对话。
问题是,一旦小程序嵌入到页面中,就会出现安全对话框。 我可以延迟嵌入,但是无法从小程序本身检查它的权限,因为它需要在加载之前执行此操作。
也许我可以加载第二个不可见运行的一般小程序,并检查权限。 但是我该怎么做呢? 是否有任何 Java 类可以检查证书是否已被客户端信任?
谢谢。
您可以通过编程方式检查 JAR 文件的证书和签名,就像 JVM 在加载小程序时所做的那样。 这并不容易,但是,至少乍一看,您将不得不这样做:
-
使用隐藏的小程序下载您的 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
-
使用LiveConnect(也许是其他东西?)来设置cookie,以便您知道"用户是否已经在以前的会话中允许了证书"。
- 启动您的小程序,可能取决于 (1) 在 (2) 中创建的 Cookie 中的存储结果。
我没有考虑太多,所以可能有更好的方法。 祝你好运,回发!