使用 java - 如何从 jar 中读取代码 signing/cert 信息
using java - How to read code signing/cert information from jar
我正在寻找一种方法来读取 JAR 文件中的代码 signing/certificate 信息。
其实我很想知道罐子的事:
- 签名了吗?
- 签名是否有效(签名后有变化)?
- 签署时是否提供了 TSA?
- 用于签名的证书是什么(CN、O、...)?
- signature/certificate什么时候过期?
我正在考虑通过 Java 将 jarsigner
调用为 exec 并解析其命令行输出以检索此信息,但现在开始后看起来很糟糕。
还有其他方法可以获取这些信息吗?
我知道可以通过我在这里看到的一些方法来完成验证,但是我想要获得的信息呢?
您可以尝试使用Jar包来读取manifest文件。
https://docs.oracle.com/javase/7/docs/api/java/util/jar/package-summary.html
Oracle 文档中有如何验证文件是否被篡改的信息
https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#Signature_Validation
我不确定如何检查证书。
更新
根据文档,您可以使用 Jar utils 包获取证书和时间戳信息 https://docs.oracle.com/javase/7/docs/technotes/guides/security/time-of-signing.html#APIENHANCE。
检查 https://www.programcreek.com/java-api-examples/java.util.jar.JarEntry SecNav.java 示例(获取 Jar 条目的证书和代码签名者)。
我正在寻找一种方法来读取 JAR 文件中的代码 signing/certificate 信息。
其实我很想知道罐子的事:
- 签名了吗?
- 签名是否有效(签名后有变化)?
- 签署时是否提供了 TSA?
- 用于签名的证书是什么(CN、O、...)?
- signature/certificate什么时候过期?
我正在考虑通过 Java 将 jarsigner
调用为 exec 并解析其命令行输出以检索此信息,但现在开始后看起来很糟糕。
还有其他方法可以获取这些信息吗?
我知道可以通过我在这里看到的一些方法来完成验证,但是我想要获得的信息呢?
您可以尝试使用Jar包来读取manifest文件。 https://docs.oracle.com/javase/7/docs/api/java/util/jar/package-summary.html
Oracle 文档中有如何验证文件是否被篡改的信息 https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#Signature_Validation
我不确定如何检查证书。
更新
根据文档,您可以使用 Jar utils 包获取证书和时间戳信息 https://docs.oracle.com/javase/7/docs/technotes/guides/security/time-of-signing.html#APIENHANCE。
检查 https://www.programcreek.com/java-api-examples/java.util.jar.JarEntry SecNav.java 示例(获取 Jar 条目的证书和代码签名者)。