我在网站上有一个签名的小程序。因此,会出现 Java 安全对话框,用户需要先授予小程序权限,然后它才能正常工作。我想做的是:
- 我想让网站解释 给用户的安全对话框 在它出现之前。该页面将 在 div 中显示一些解释文本, 几秒钟后,保安 将出现对话框。
- 如果用户已经在之前的 session 中允许使用该证书,则应该 只需运行小程序即可,无需任何额外操作 对话。
问题在于,一旦将小程序嵌入到页面中,就会出现安全对话框。我可以延迟嵌入,但是无法从小程序本身检查它的权限,因为它需要在加载之前执行。
也许我可以加载第二个正常运行的小程序,它可以不可见地运行,并检查权限。但是我该怎么做呢?是否有任何 Java 类可以检查客户端是否信任证书?
谢谢。
最佳答案
您可以通过编程方式检查 JAR 文件的证书和签名,就像 JVM 在加载小程序时所做的那样。这并不容易,但至少乍一看,您将不得不这样做:
使用隐藏的小程序下载您的 JAR 并验证它们的证书,就像小程序查看器一样。您可以使用
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
使用 LiveConnect (也许是其他东西?)设置一个 cookie,以便您知道“用户是否已经在之前的 session 中允许该证书”。
- 启动您的小程序,可能取决于 (1) 在 (2) 中创建的 cookie 中存储的结果。
我还没有考虑那么多,所以可能有更好的方法。祝你好运,回帖!
关于java - 我可以在运行我的小程序之前检查 Java 小程序证书是否可信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888743/