2016-11-08 149 views
1

我目前正在尝试设置一个基于某些WSDL文件生成一些Java代码的maven项目。配置maven插件cxf-codegen-plugin忽略安全问题

不幸的是我有一些问题,因为我的测试环境没有一个有效的SSL证书(我通过使用chrome证实了这一点)。因为这是在测试环境中发生的,所以我不关心安全性。我只想让我的代码生成工作。

下面显示了我目前如何使用该插件CXF-CODEGEN-插件

 <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>3.1.8</version> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot> 
         <defaultOptions> 
          <bindingFiles> 
           <bindingFile>${basedir}/src/main/jaxb/jaxb.bindings.xml</bindingFile> 
          </bindingFiles> 
          <packagenames> 
           <packagename>foo.bar</packagename> 
          </packagenames> 
          <extraargs> 
           <extraarg>-client</extraarg> 
          </extraargs> 

         </defaultOptions> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>[Removed URL]</wsdl> 
          </wsdlOption> 

         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
       </executions> 
     </plugin> 

当我运行mvn干净安装Maven输出下列错误

[错误]未能执行目标org.apache .cxf:cxf-codegen-plugin:3.1.8:项目上的wsdl2java(generate-sources)TestClient: 执行生成源目标org.apache.cxf:cxf-codegen-plugin:3.1.8:wsdl2java失败:org .apache.cxf.wsdl11.WSDLRuntimeException: 无法创建wsdl定义[已删除的URL] WSDLException:faultCode = PARSER_ERROR:问题解析[已删除的URL]。: javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:未找到与主题替代的DNS名称匹配....找到。 - > [Help 1]

所以我的问题是,如果有一种方法来配置cxf-codegen-plugin s.t.它只是忽略了所有的安全问题并继续生成Java代码?

回答

0

不知道是否可以忽略,但您可以将证书添加到您的本地证书存储中,这似乎也可以解决您的问题。

不知道有关您的开发环境的任何进一步细节,这些说明可能直接适用或至少稍加修改。

我发现帮助从Ishwara Varnasi的这篇博客文章:

http://ibswings.blogspot.fi/2008/12/running-axis-wsdl2java-on-https-wsdl.html

不久的步骤:

  1. 下载证书%JAVA_HOME%/JRE/lib/security中。该目录可能会有所不同,但应该有java jre cacert证书存储。
  2. 将下载的证书导入同一目录中的cacerts文件。在导入之前制作原始cacerts文件的备份副本是一个好主意。

步骤更详细的:

  1. 撷取证书可与浏览器通过确认 安全性异常和永久存储的证书,然后从浏览器向所需的目录出口完成它。以X.509格式导出应该可以正常工作,但不知道其他格式。此外工具 像OpenSSL的可用于下载证书,请参阅 Using openssl to get the certificate from a server
  2. 使用合适的工具来导入证书,例如:

    keytool -importcert -trustcacerts -keystore cacerts -storepass changeit -alias aliasname -file cert_to_import_file_name

    更多infromation有关导入: How to properly import a selfsigned certificate into Java keystore that is available to all Java applications by default?

至少在我的情况下,storepass确实是'changeit'。因此,当我第一次想到它时,并不意味着要将它改变成任何“真正”的门店。

如果使用多个Java版本或将其添加到所有版本,请务必将证书导入到正确的JRE。