springcloud openFeign客戶端禁用SSL驗(yàn)證
要針對(duì)特定的 Feign 客戶端禁用 SSL 驗(yàn)證,可以通過(guò)自定義配置類實(shí)現(xiàn)。以下是完整解決方案:
1. 創(chuàng)建自定義配置類(禁用 SSL 驗(yàn)證)
import feign.Client;
import feign.httpclient.ApacheHttpClient;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.context.annotation.Bean;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
public class DisableSslConfig {
@Bean
public Client feignClient() throws Exception {
// 創(chuàng)建信任所有證書的SSL上下文
SSLContext sslContext = SSLContexts.custom()
.loadTrustMaterial(null, new TrustSelfSignedStrategy())
.build();
// 創(chuàng)建自定義Socket工廠
SSLSocketFactory socketFactory = sslContext.getSocketFactory();
// 構(gòu)建禁用SSL驗(yàn)證的HttpClient
return new ApacheHttpClient(
org.apache.http.impl.client.HttpClients.custom()
.setSSLContext(sslContext)
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.build()
);
}
}
2. 應(yīng)用到特定 Feign 客戶端
在 @FeignClient 注解中引用自定義配置:
import org.springframework.cloud.openfeign.FeignClient;
@FeignClient(
name = "your-service",
url = "https://your-service-url",
configuration = DisableSslConfig.class // 應(yīng)用自定義配置
)
public interface YourServiceClient {
// 你的Feign接口方法
@GetMapping("/endpoint")
String getData();
}
3. 補(bǔ)充說(shuō)明(重要)
安全警告
?? 此配置會(huì)完全禁用 SSL 驗(yàn)證:
- 允許中間人攻擊(MITM)
- 暴露敏感數(shù)據(jù)風(fēng)險(xiǎn)
- 僅限開發(fā)/測(cè)試環(huán)境使用
- 生產(chǎn)環(huán)境必須使用有效證書
備選方案(推薦)
如果只是需要信任自簽名證書,更安全的方式是將證書添加到信任庫(kù):
keytool -import -alias mycert -file server.crt -keystore truststore.jks
然后在 application.yml 配置:
server:
ssl:
trust-store: classpath:truststore.jks
trust-store-password: changeit
4. 全局禁用方式(不推薦)
如果確實(shí)需要全局禁用(所有 Feign 客戶端),在 application.yml 添加:
feign:
client:
config:
default: # 作用于所有客戶端
disable-ssl-validation: true
httpclient:
disable-ssl-validation: true # 確保HTTP客戶端生效
驗(yàn)證是否生效
在日志中添加檢查:
@Bean
public Client feignClient() throws Exception {
log.warn("?? SSL驗(yàn)證已禁用 - 僅限測(cè)試環(huán)境使用!");
// ... 同上 ...
}
關(guān)鍵點(diǎn)總結(jié)
| 方法 | 作用范圍 | 推薦指數(shù) | 安全風(fēng)險(xiǎn) |
|---|---|---|---|
| 自定義配置類 | 單個(gè)客戶端 | ★★★★ | 中 |
| 信任庫(kù)配置 | 全局 | ★★★★★ | 低 |
| 全局禁用SSL | 所有客戶端 | ★☆☆☆☆ | 極高 |
最佳實(shí)踐:優(yōu)先使用信任庫(kù)方案,僅在測(cè)試環(huán)境針對(duì)特定服務(wù)使用自定義配置類方案。生產(chǎn)環(huán)境務(wù)必保持 SSL 驗(yàn)證開啟。
到此這篇關(guān)于springcloud openFeign客戶端禁用SSL驗(yàn)證的文章就介紹到這了,更多相關(guān)springcloud openFeign禁用SSL驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Jersey構(gòu)建圖片服務(wù)器過(guò)程解析
這篇文章主要介紹了使用Jersey構(gòu)建圖片服務(wù)器過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
解決SpringBoot在后臺(tái)接收前臺(tái)傳遞對(duì)象方式的問(wèn)題
這篇文章主要介紹了解決SpringBoot在后臺(tái)接收前臺(tái)傳遞對(duì)象方式的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
java基于dom4j包實(shí)現(xiàn)對(duì)XML解析的方法
這篇文章主要介紹了java基于dom4j包實(shí)現(xiàn)對(duì)XML解析的方法,結(jié)合實(shí)例形式分析了java針對(duì)xml格式數(shù)據(jù)的相關(guān)解析操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05
淺談Spring Boot 微服務(wù)項(xiàng)目的推薦部署方式
這篇文章主要介紹了淺談Spring Boot 微服務(wù)項(xiàng)目的推薦部署方式,具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09
java Collection 之Set使用說(shuō)明
本篇文章小編為大家介紹,java Collection 之Set使用說(shuō)明。需要的朋友參考下2013-04-04
Java案例使用集合方法實(shí)現(xiàn)統(tǒng)計(jì)任意字符串中字符出現(xiàn)的次數(shù)
這篇文章主要介紹了Java案例使用集合方法實(shí)現(xiàn)統(tǒng)計(jì)任意字符串中字符出現(xiàn)的次數(shù),下面我們將用兩種方法實(shí)現(xiàn),需要的小伙伴可以參考一下文章具體內(nèi)容2022-04-04
springboot使用log4j2異步日志提升性能的實(shí)現(xiàn)方式
這篇文章主要介紹了springboot使用log4j2異步日志提升性能,異步日志實(shí)現(xiàn)方式:將日志存入一個(gè)單獨(dú)的隊(duì)列中,有一個(gè)單獨(dú)的線程從隊(duì)列中獲取日志并寫入磁盤文件,需要的朋友可以參考下2022-05-05
mybatis中如何實(shí)現(xiàn)一個(gè)標(biāo)簽執(zhí)行多個(gè)sql語(yǔ)句
這篇文章主要介紹了mybatis中如何實(shí)現(xiàn)一個(gè)標(biāo)簽執(zhí)行多個(gè)sql語(yǔ)句問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04

