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

标签 java security user-interface applet certificate

我在网站上有一个签名的小程序。因此,会出现 Java 安全对话框,用户需要先授予小程序权限,然后它才能正常工作。我想做的是:

  • 我想让网站解释 给用户的安全对话框 在它出现之前。该页面将 在 div 中显示一些解释文本, 几秒钟后,保安 将出现对话框。
  • 如果用户已经在之前的 session 中允许使用该证书,则应该 只需运行小程序即可,无需任何额外操作 对话。

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

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

谢谢。

最佳答案

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

  1. 使用隐藏的小程序下载您的 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
    
  2. 使用 LiveConnect (也许是其他东西?)设置一个 cookie,以便您知道“用户是否已经在之前的 session 中允许该证书”。

  3. 启动您的小程序,可能取决于 (1) 在 (2) 中创建的 cookie 中存储的结果。

我还没有考虑那么多,所以可能有更好的方法。祝你好运,回帖!

关于java - 我可以在运行我的小程序之前检查 Java 小程序证书是否可信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888743/

相关文章:

c# - .NET Treeview 不会在空控件上发送单击事件

java - 使用 FTP 服务器的套接字,但客户端未收到输出

security - 防火墙如何知道传输是 UDP 还是 TCP?

java - 如何使用jboss AS 7.1.1配置jbpm 6并且无法打开jbpm-console。

PHP - 路径操作/输入验证

security - 如何在 React Native 应用程序中保持客户端 JSON Web token 的安全?

java - Swing UIManager 默认系统观感

java - 创建一个工作 Java GUI

java - 如何为通过 Resteasy Client API 构建的请求设置 cookie

java - Swing:对齐 [dynamic][static][dynamic] 组件宽度的最简单方法?