配置maven插件cxf-codegen-plugin以忽略安全问题

时间:2016-11-08 12:00:47

标签: java maven cxf-codegen-plugin

我目前正在尝试设置一个maven项目,该项目根据一些WSDL文件生成一些Java代码。

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

以下显示了我目前如何使用插件cxf-codegen-plugin

        <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 clean install maven时输出以下错误

[错误]无法在项目TestClient上执行目标org.apache.cxf:cxf-codegen-plugin:3.1.8:wsdl2java(generate-sources): 执行生成目标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名称匹配.... - &GT; [帮助1]

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

1 个答案:

答案 0 :(得分: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文件的备份副本。
  3. 更详细的步骤:

    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

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

    3. 至少在我的情况下,storepass真的是“改变了”。所以没有意义将其改为任何真实的&#39;当我第一次想到它时,就会存货。

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