Java安全例外无效的SHA1 Jar文件

问题描述 投票:3回答:3

我是Java环境的新手。执行Jar文件后我遇到了问题。我正在使用Eclipse KEPLER进行Java编程。我使用File->Export ->Runnable Jar file导出了我的项目。 jar文件已创建。当我使用Java-jar文件名启动jar时。在罐子里,我得到了一些错误,我已经附加到这些问题上了。我看着这个invalid SHA1 signature file digest并尝试了同样的方法。我仍然遇到这个问题。

Error : Exception in thread "main" java.lang.SecurityException:invalid SHA1 Signature file digest for com/microsoft/sqlserver/jdbc/SQLServerException.class

java sql-server eclipse jar sha1
3个回答
6
投票

该错误意味着类路径上的一个JAR文件包含一个MANIFEST.MF,其中包含com / microsoft / sqlserver / jdbc / SQLServerException.class的条目,并且其中的SHA1校验和不匹配。

首先要检查的是JAR没有损坏。既然您可以从Eclipse内部运行项目,那么它们似乎没问题。

这导致导出的JAR。我的猜测是出口过程留下了垃圾。打开它(JAR存档是ZIP存档,因此任何ZIP工具都可以工作)并查找MANIFEST.MF文件。

其中一个包含上述条目。找到它后,将其与原始JAR中的版本进行比较。它们必须100%相同。

[编辑]选项“将所需的库提取到生成的JAR中”有一个错误:它在MANIFEST.MF中留下签名。这里的问题是签名取决于清单的确切内容。即使一个位在任何地方都发生变化,签名也会变得腐败。这是设计使然:否则,攻击者可以修改代码。

尝试“将所需的库打包到生成的JAR中”。

如果这不起作用,则必须使用最后一个选项。传递可执行项目时,请确保包含JAR和子文件夹。


1
投票

我解决了签名问题的废话

  • 解压缩sqljdbc41.jar(使用WinZip)删除所有名称:SHA1-Digest:在MANIFEST.MF中
  • 删除MSFTSIG.RSA,MSFTSIG.SF
  • 重新打包sqljdbc41.jar(使用WinZip)

0
投票

我删除了旧的sqljdbc jar并使用了最新的jar。它解决了我的问题

© www.soinside.com 2019 - 2024. All rights reserved.