在Java 7u40上与applet一起使用的BouncyCastle密码学提供程序库

斯蒂芬诉

案例:我正在维护一个Java小程序,该程序使用BouncyCastle库bcpkix-jdk15on-149.jarbcprov-jdk15on-149.jar

问题是当小程序在启用了JRE版本7_u40的浏览器上运行时。
行为已从版本7_u25更改为某种方式,它始终会提示一个模式窗口,例如“使用自签名证书的应用程序的安全提示”(无法再永久隐藏),只是为了信任bcprov

https://www.java.com/zh_CN/download/help/appsecuritydialogs.xml

据我所知,这是因为BC库已使用由“ JCE代码签名CA”颁发的BouncyCastle证书进行了签名。因此,该库可以执行并充当密码提供程序。

但是:JRE无法建立证书链来信任签名。它显示“ provider:UNKNOWN”

我知道我可以删除该签名并自己签名(我拥有Thawte代码签名证书):

  • 它与bcpkix lib一起使用
  • 它不适用于bcprov,因为它不会被视为有效的密码提供程序(JRE不会信任它)。

我对吗?我能做些什么?
PS:我在Google上进行了大量搜索,以找到JCA根证书(将其放入JRE信任库中),但没有成功...是否有办法获取该根CA?

斯蒂芬诉

经过大量搜索并在BC邮件列表中进行了一些张贴...。我找到了解决方案,因此将其放置在这里,供可能遇到该问题的其他人使用:

解决方案基本上是使用我自己的证书再次对BC库进行签名。
JAR需要JCA签名才能被信任为加密提供程序,因此请不要删除它。
为了能够在JVM(受JRE信任)中运行,JAR还(另外)需要代码签名。

最后一件事,签名技术发生了一些不兼容:

  • BC lib使用SHA1摘要算法签名
  • jarsigner(在我的计算机上)默认情况下使用SHA256摘要算法进行签名,这会导致验证失败。
  • 因此,我不得不要求jarsigner以SHA1方式进行操作。(出于某种原因,从这个角度来看,两个签名必须保持一致)

这是添加并实现它的jarsigner命令的魔术参数:-digestalg SHA1

示例命令:

jarsigner -keystore ./mykeystore.jks -storepass myPass -digestalg SHA1 bcprov-jdk15on-149.jar myAlias

...您就完成了!

以下帖子给了我提示:是什么阻止Java使用多种签名算法来验证签名的jar。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java插件7u40仅在与另一个小程序离开页面后无法加载小程序

来自分类Dev

Java插件7u40仅在与另一个小程序离开页面后无法加载小程序

来自分类Dev

Android中的Java密码学标准库是否作为本机代码运行

来自分类Dev

为什么Java密码学受到限制?

来自分类Dev

在DIY OpenShift应用程序上设置Tomcat以与Java8一起使用

来自分类Dev

如何将Java内部XMLStreamWriter与另一个提供程序一起使用

来自分类Dev

将Chroot与Java应用程序一起使用

来自分类Dev

Selenium / Java在Windows上无法与IE一起使用

来自分类Dev

JAVA 7之前的JDBC API是否可以与JAVA 7一起使用,并尝试使用资源?

来自分类Dev

启用Java安全性后,Eclipse崩溃(Java密码学扩展-JCE)

来自分类Dev

批处理文件以将Java密码学扩展文件添加到更新的Java

来自分类Dev

启用Java安全性后,Eclipse崩溃(Java密码学扩展-JCE)

来自分类Dev

测试 Java Web 应用程序库的依赖项

来自分类Dev

自Java 1.7.0u40起,Java WebStart应用程序的启动延迟很长

来自分类Dev

与wildfly提供的bouncycastle一起使用

来自分类Dev

如何从Java 8使Wicket 7与java.time一起使用?

来自分类Dev

如何使TLS与Java一起使用?

来自分类Dev

Rabbitmq无法与Java一起使用

来自分类Dev

Java if + String不能一起使用

来自分类Dev

Java if + String不能一起使用

来自分类Dev

使用Java 7u45启动签名的applet的问题

来自分类Dev

现在是时候将Java EE 7与Java 8一起用于新的企业应用程序了吗?

来自分类Dev

如何使Dagger 2与Android Studio Java库项目一起使用

来自分类Dev

找不到方法-将GoCardless Java库与ColdFusion一起使用

来自分类Dev

我如何使Dagger 2与Android Studio Java库项目一起使用

来自分类Dev

java.sql.PreparedStatement.executeUpdate()无法与mysql数据库一起使用

来自分类Dev

在Cipher.getInstance(String algo)中使用的Java密码学中'AGCM256-KW'的算法字符串是什么?

来自分类Dev

在Cipher.getInstance(String algo)中使用的Java密码学中'AGCM256-KW'的算法字符串是什么?

来自分类Dev

Java与来自多个应用程序实例的Redis一起使用

Related 相关文章

  1. 1

    Java插件7u40仅在与另一个小程序离开页面后无法加载小程序

  2. 2

    Java插件7u40仅在与另一个小程序离开页面后无法加载小程序

  3. 3

    Android中的Java密码学标准库是否作为本机代码运行

  4. 4

    为什么Java密码学受到限制?

  5. 5

    在DIY OpenShift应用程序上设置Tomcat以与Java8一起使用

  6. 6

    如何将Java内部XMLStreamWriter与另一个提供程序一起使用

  7. 7

    将Chroot与Java应用程序一起使用

  8. 8

    Selenium / Java在Windows上无法与IE一起使用

  9. 9

    JAVA 7之前的JDBC API是否可以与JAVA 7一起使用,并尝试使用资源?

  10. 10

    启用Java安全性后,Eclipse崩溃(Java密码学扩展-JCE)

  11. 11

    批处理文件以将Java密码学扩展文件添加到更新的Java

  12. 12

    启用Java安全性后,Eclipse崩溃(Java密码学扩展-JCE)

  13. 13

    测试 Java Web 应用程序库的依赖项

  14. 14

    自Java 1.7.0u40起,Java WebStart应用程序的启动延迟很长

  15. 15

    与wildfly提供的bouncycastle一起使用

  16. 16

    如何从Java 8使Wicket 7与java.time一起使用?

  17. 17

    如何使TLS与Java一起使用?

  18. 18

    Rabbitmq无法与Java一起使用

  19. 19

    Java if + String不能一起使用

  20. 20

    Java if + String不能一起使用

  21. 21

    使用Java 7u45启动签名的applet的问题

  22. 22

    现在是时候将Java EE 7与Java 8一起用于新的企业应用程序了吗?

  23. 23

    如何使Dagger 2与Android Studio Java库项目一起使用

  24. 24

    找不到方法-将GoCardless Java库与ColdFusion一起使用

  25. 25

    我如何使Dagger 2与Android Studio Java库项目一起使用

  26. 26

    java.sql.PreparedStatement.executeUpdate()无法与mysql数据库一起使用

  27. 27

    在Cipher.getInstance(String algo)中使用的Java密码学中'AGCM256-KW'的算法字符串是什么?

  28. 28

    在Cipher.getInstance(String algo)中使用的Java密码学中'AGCM256-KW'的算法字符串是什么?

  29. 29

    Java与来自多个应用程序实例的Redis一起使用

热门标签

归档