browser-mob proxy - 执行maven打包的jar时的java.lang.SecurityException

时间:2012-08-29 16:15:27

标签: maven maven-2 proxy

我在我的Web应用程序中使用browser-mob代理来模拟代理服务器。在执行mvn clean包之后,当我执行jar时,我得到以下错误:

Exception in thread "main" java.lang.SecurityException: no manifiest section for signature file entry org/bouncycastle/asn1/ocsp/ResponderID.class
at sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVerifier.java:399)
at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:250)
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:193)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:305)
at java.util.jar.JarVerifier.update(JarVerifier.java:216)
at java.util.jar.JarFile.initializeVerifier(JarFile.java:341)
at java.util.jar.JarFile.getInputStream(JarFile.java:406)
at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:752)
at sun.misc.Resource.cachedInputStream(Resource.java:77)
at sun.misc.Resource.getByteBuffer(Resource.java:160)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:436)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:472)

Meta-Inf文件夹没有任何签名证书,我可以在构建我的jar时将其排除。

3 个答案:

答案 0 :(得分:1)

我记得在一些bouncycastle课程中遇到过类似的问题。

我的问题是由一个“ueber-jar”(在我的例子中是apache-ds-all)引起的,它不仅包含来自apache-ds项目的类,还包含来自apache-ds第三方依赖项的所有类。

由于bouncycastle类最初是在签名的jar文件中提供的,所以当从不同位置加载的类时,我得到了一个安全异常 - 这是首先签署JAR的全部内容。

我建议扫描类路径中的所有JAR文件,看看org / bouncycastle / asn1 / ocsp / ResponderID.class是否包含在非bouncycastle分发jar文件中。

希望有所帮助!

答案 1 :(得分:1)

我在ic4u包中遇到了安全问题。我只是将它排除在依赖之外,一切正常。

<dependency>
  <groupId>biz.neustar</groupId>
  <artifactId>browsermob-proxy</artifactId>
  <version>${browser-mob-version}</version>
  <exclusions>
    <exclusion>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-api</artifactId>
    </exclusion>
    <exclusion>
      <artifactId>icu4j</artifactId>
      <groupId>com.ibm.icu</groupId>
    </exclusion>
  </exclusions>
</dependency>

答案 2 :(得分:0)

iText 4.2.0和bouncycastle库(与ResponderID和其他类相关的SecurityExceptions)存在完全相同的问题。

我最终删除了iText附带的签名jar中的META-INF目录。它可能不是最优雅的方式,但至少它解决了我的问题。