当前位置: 首页 > 知识库问答 >
问题:

无法使用JMOD打包已签名的Java安全提供程序

崔棋
2023-03-14

我正在阅读关于在Java加密体系结构中实现提供者的文档,其中指出

您不能在JMOD文件中打包签名提供程序

该条还指出:

只有提供Cipher、KeyAgreement、KeyGenerator、Mac或SecretKFactory实例的提供商必须签名。如果您的提供者只提供SecureRandom、MessageDigest、Signature、KeyStore等实例,则不需要对提供者进行签名。

我正在尝试使用JDK 11版本开发这个提供者,该版本利用了。jmod文件替换了。jar文件。

我研究了标准安全策略使用的函数,其中许多函数使用密码、密钥协议、密钥生成器、Mac或SecretKeyFactory,但它们以某种方式打包到了。我使用的JDK 11中的jmod格式。

有人能进一步解释吗?

共有1个答案

关玮
2023-03-14

JDK中打包的jmod文件中的提供程序没有“签名”,因为jmod不支持签名。如果你检查一下。带有jmod列表的jmod文件您将找不到任何文件。例如SF签名文件。

我正在尝试使用JDK 11版本开发这个提供者,该版本利用了。jmod文件替换了。jar文件。

注意. jmod文件不是jar文件的完全替换. jmod文件是只链接的工件.从jmod doc:

JMOD文件格式允许您聚合其他文件。类文件、元数据和资源。此格式是可传输但不可执行的,这意味着您可以在编译时或链接时使用它,但不能在运行时使用。

换句话说,与JDK捆绑在一起的jmod文件不是直接加载执行的,而是被馈送到jlink等工具中,这些工具将它们分开并重新打包。这种重新打包会以任何方式使任何签名哈希无效,因此jmod文件需要支持签名的理由更少。

如果您想分发自定义提供者,那么必须使用jar文件分发它们,然后对这些jar文件进行签名。加载提供程序时是否需要签名取决于JDK发行版。

请注意,JDK自己的提供程序不是从捆绑的jmod文件加载的,而是从特定于实现的存档加载的,该存档的有效性通过另一种机制验证。

只有当您想将本机库打包到归档文件中,然后分发归档文件时,才需要使用jmod文件。在这种情况下,用户必须重新打包,然后重新签名他们最终基于jmod文件生成的任何工件。

如果您不需要分发本地库,我的建议是分发. jar文件,它可以用jarsigner签名,然后直接用于执行。正如jmod文档中所述:

注意:对于大多数开发任务,包括在模块路径上部署模块或将它们发布到Maven存储库,继续将模块打包在模块化JAR文件中。jmod工具适用于具有本机库或其他配置文件的模块,或者您打算使用jlink工具链接到运行时映像的模块。

 类似资料:
  • 本文向大家介绍详解Java数字签名提供XML安全,包括了详解Java数字签名提供XML安全的使用技巧和注意事项,需要的朋友参考一下 用Java数字签名提供XML安全 众所周知,XML在产品和项目开发中起着非常重要的作用。通过XML文档可以获取很多信息,还可以使用XML文件进行CRUD(增加、查询、更新和 删除)操作。然而值得注意的是,我们如何确保XML中的数据是来自经过认证的可信和可靠的来源。关于

  • 我们有我们的定制JCE安全提供商,它使用我们的智能卡进行加密操作。 当我们试图使用某些类,如Cipher、KeyAgreement、KeyGenerator、Mac或SecretKeyFactory时,就会出现问题。 Java抛出异常: 我在这里和这里读到,如果您试图使用自定义JCE安全提供程序进行加密,则必须对其进行签名。这是因为一些政府制定了一些有关密码的法律。 我还阅读了这篇文章:如何签署自

  • 在上一章,我们创建了自己的 Android 工程,并成功的在模拟器中运行起来。同时提到,工程目录中有一个 bin 目录,运行之后我们可以在此目录下找到我们的 apk。那么不难想到,我们在点“Run”之后,系统会编译我们的代码,并结合配置文件打出一个 apk。 众所周知 apk 是 Android 系统的安装包,在我们编写完代码,打包成 apk 之后,就可以将 apk 发布到应用市场,用户下载 ap

  • 问题内容: Sun的PKCS11 JCE安全提供程序缺少我们需要的某些功能。 因此,我使用原始资源编写了它的增强版本。 不幸的是,JCE基础结构拒绝新的提供者 “ JCE无法验证提供者”, 因为它没有正确签名。 抛出。 (呼叫) 关于如何签署新提供商以使其与JCE一起工作的任何建议? 问题答案: 该过程在文档“如何实现 提供者”中进行了描述。 它涉及到电子邮件 太阳向Oracle提供一些信息(包括

  • JCA提供者提出的解决方案是将JAR放在jre/lib/ext文件夹中,但不是从那里加载的。据我所知,这是由于OSGi(Eclipse equinox)类加载器策略将bootstrap类加载器作为每个bundle类加载器的父类,从而排除了从jre/lib/ext文件夹加载的扩展类加载器。即。在jre/lib/ext文件夹中没有一个bundle可以看到任何东西。 是否有一种方法可以让Eclipse

  • 主要内容:本节引言:,1.什么是签名,有什么用:,2.Android Studio如何打包签名:,本节小结本节引言: 第一章的倒数第二节,本节给大家介绍的是如何将我们的程序打包成Apk文件,并且为我们的Apk签名! 上一节中已经说了,我们后续的教程使用的IDE是Android Studio,所以本节讲解的也是AS(后面都这样 简称吧)下对项目进行打包签名! 1.什么是签名,有什么用: Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上的,平时我