springboot整合cxf绕过https
时间: 2025-01-04 09:11:09 浏览: 8
### Spring Boot 整合 CXF 并绕过 HTTPS 的配置
#### 1. 添加依赖项
为了使 Spring Boot 应用程序能够与 Apache CXF 结合工作,需在 `pom.xml` 文件中引入必要的 Maven 依赖。
```xml
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.5.0</version>
</dependency>
<!-- 如果需要支持 JAX-RS -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-rs</artifactId>
<version>3.5.0</version>
</dependency>
```
#### 2. 创建 WebService 客户端或服务端
定义一个简单的接口来表示 Web Service 接口:
```java
@WebService(targetNamespace = "http://example.com/")
public interface MyWebService {
String sayHello(String name);
}
```
实现上述接口的服务端逻辑如下所示:
```java
@Component
@javax.jws.WebService(
serviceName = "MyWebServiceImpl",
portName = "MyWebServiceImplPort",
targetNamespace = "http://example.com/",
endpointInterface = "com.example.MyWebService"
)
public class MyWebServiceImpl implements MyWebService {
@Override
public String sayHello(String name) {
return "Hello, " + name;
}
}
```
对于客户端,则可以利用 `JaxWsProxyFactoryBean` 来创建代理对象访问远程服务。
#### 3. SSL/TLS 握手过程中忽略证书验证
当应用程序尝试通过 HTTPS 协议连接到外部资源时,默认情况下会执行严格的 SSL/TLS 验证流程。然而,在某些特定场景下(比如开发环境),可能希望简化此过程甚至完全跳过它。可以通过自定义 HTTP Conduit 设置来达到这一目的。
下面是一个关于如何设置 CXF 不校验证书的方法:
```properties
cxf.http.conduits.my-service-tls.disableCNCheck=true
cxf.http.conduits.my-service-tls.trustAllCertificates=true
```
这些属性应该被放置于项目的 application.properties 或者 application.yml 中,并且其中的 my-service 是指代具体 web service 名字的部分字符串匹配即可[^1]。
另外一种方式是在 Java 虚拟机启动参数里加入 `-Dcom.sun.net.ssl.checkRevocation=false -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2` ,这同样能起到关闭部分安全特性的作用但是不推荐用于生产环境中因为存在安全隐患。
需要注意的是,尽管这里提供了绕过SSL认证的方式,但这并不意味着这样做总是合理的;相反,在实际部署之前应当充分考虑安全性因素并采取适当措施保护数据传输的安全性。
阅读全文