Feign忽略Https的SSL最佳方案(且保证负载均衡将失效)

  • 同时解决Https的SSL证书验证问题和feign不支持Patch请求方法的问题

代码 1. 工具类 OkHttpUtils.java

import javax.net.ssl.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;/*** @author Vania*/
public class OkHttpUtils {/*** X509TrustManager instance which ignored SSL certification*/public static final X509TrustManager IGNORE_SSL_TRUST_MANAGER_X509 = new X509TrustManager() {@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[]{};}};/*** Get initialized SSLContext instance which ignored SSL certification** @return* @throws NoSuchAlgorithmException* @throws KeyManagementException*/public static SSLContext getIgnoreInitedSslContext() throws NoSuchAlgorithmException, KeyManagementException {SSLContext sslContext = SSLContext.getInstance("SSL");sslContext.init(null, new TrustManager[]{IGNORE_SSL_TRUST_MANAGER_X509}, new SecureRandom());return sslContext;}/*** Get HostnameVerifier which ignored SSL certification** @return*/public static HostnameVerifier getIgnoreSslHostnameVerifier() {return new HostnameVerifier() {@Overridepublic boolean verify(String arg0, SSLSession arg1) {return true;}};}
}

代码 2. 工具类 FeignConfiguration.java

import feign.Client;
import feign.okhttp.OkHttpClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.netflix.ribbon.SpringClientFactory;
import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory;
import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;@Slf4j
@Configuration
public class FeignConfiguration {/*** 解决 feign client 中https不安全的问题** @param cachingFactory* @param clientFactory* @return*/@Beanpublic Client feignClient(CachingSpringLoadBalancerFactory cachingFactory, SpringClientFactory clientFactory) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {// 此处必须为 new LoadBalancerFeignClient 否则负载均衡将失效(现象:消费者无法从注册中心获取服务提供者的ip)// 这个只能解决忽略https证书验证// return new LoadBalancerFeignClient(new Client.Default(SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build().getSocketFactory(), new NoopHostnameVerifier()),//        cachingFactory, clientFactory);// 使用okhttp 解决证书验证 和 Patch请求方法不支持的问题return new LoadBalancerFeignClient(new OkHttpClient(new okhttp3.OkHttpClient().newBuilder().sslSocketFactory(OkHttpUtils.getIgnoreInitedSslContext().getSocketFactory(), OkHttpUtils.IGNORE_SSL_TRUST_MANAGER_X509).hostnameVerifier(OkHttpUtils.getIgnoreSslHostnameVerifier()).build()),cachingFactory, clientFactory);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0开始搭建ns3环境以及NetAnim简单使用

一、环境准备 ns3是基于GNU/Linux平台使用C开发的工具软件,在windows系统中安装使用ns3环境,可以使用虚拟机VMware并安装ubuntu系统来实现,现将本教程所用到的虚拟机和系统镜像放到网盘提供下载 名称链接提取码VMware Workstation 17 Proht…

简约时尚的健康手表,智能守护每一刻,dido Y60上手

智能手表是现在很流行的一种智能设备,很多品牌都推出了各种各样的产品,但是大部分都更侧重功能和运动的方面,健康监测往往只是配角,而随着人们对自己的健康越来越重视,有些朋友只是单纯的需要一块专业的健康监测手表。…

选择任务管理软件:哪个更适合你的需求?

随着互联网的发展,知识管理是可以成为企业获得更大发展前景的神兵利器,任务协同,是服务于中小型团队,或者大型机构的终端组织。来看看这款国外流行的任务管理软件Zoho Projects。 任务管理是企业协同的重要组成部分。 任务管理是企…

Bitcoin 加速交易操作示例

这里以 Bitcoin Ordinals NFT 为例, 进行加速交易演示 第1步:新建子账户 温馨提示:如果有多条鱼未确认,也只需1个账户即可,不必搞多个子账户 第2步:切换回到老地址(Account 1) 第3步…

【Kubernetes】Kubernetes的PV和PVC的用法

PV、PVC 前言一、 存储卷1. emptyDir 存储卷1.1 概念1.2 实例 2. hostPath 存储卷2.1 概念2.2 实例 3. nfs共享存储卷 二、PV 和 PVC1. 概念1.1 PV1.2 PVC1.3 PVC 的使用逻辑1.4 创建机制1.5 PV 和 PVC 的生命力周期1.6 创建及销毁 PV 的流程 2. PV 和 PVC 的创建2.1 查看定义2…

高并发内存池项目(C++实战项目)

项目介绍 项目来源 本项目实现了一个高并发内存池,参考了Google的开源项目tcmalloc实现的简易版;其功能就是实现高效的多线程内存管理。由功能可知,高并发指的是高效的多线程,而内存池则是实现内存管理的。 tcmalloc源码 项目…

论智能与反智能的对立统一

智能和反智能可以被视为一个相对的概念,彼此存在一定的关联和互补。在发展智能和反智能技术的过程中,我们必须始终牢记伦理和法律的原则,在合法和道德的框架内进行研究和应用,遵守相关的规定和限制。只有在这样的前提下&#xff0…

linux的shell中 if 的运算符的使用

一、文件比较运算符 e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 如: [ -d /tmp/mydir ]-f filename 如果 filename为常规文件,则为真 如: […

基于vue开发的影视站模板(模仿西瓜视频)

基于vue3开发的影视站模板, 对接苹果cms10数据库表, 采用pythondjangovue开发 效果预览 http://101.43.124.118:8002 源码地址 https://github.com/geeeeeeeek/appvideo 运行步骤 1.安装依赖 npm install 2.运行 npm run dev 代码说明 入口文件为main.js 接口请求的bas…

【计算机网络】概述及数据链路层

每一层只依赖于下一层所提供的服务,使得各层之间相互独立、灵活性好,已于实现和维护,并能促进标准化工作。 应用层:通过应用进程间的交互完成特定的网络应用,HTTP、FTP、DNS,应用层交互的数据单元被称为报…

MySQL 中常见的几种高可用架构部署方案

MySQL 中的集群部署方案 前言 这里来聊聊,MySQL 中常用的部署方案。 MySQL Replication MySQL Replication 是官方提供的主从同步方案,用于将一个 MySQL 的实例同步到另一个实例中。Replication 为保证数据安全做了重要的保证,是目前运用…

数据结构初阶--二叉树的链式结构

目录 一.二叉树链式结构的概念 二.二叉树链式结构的功能实现 2.1.链式二叉树的定义 2.2.链式二叉树的构建 2.3.链式二叉树的遍历 2.3.1.先序遍历 2.3.2.中序遍历 2.3.3.后序遍历 2.3.4.层序遍历 2.4.链式二叉树的求二叉树的结点数量 法一:计数法 法二&a…

Linux知识点 -- 进程概念(补充)

Linux知识点 – 进程概念(补充) 文章目录 Linux知识点 -- 进程概念(补充)一、进程地址空间的堆区二、虚拟地址到物理地址之间的转化三、虚拟地址到物理地址之间的映射 一、进程地址空间的堆区 在用户每次使用malloc等函数在进程的…

OBD接口引脚定义

汽车的OBD接口引脚定义分配如下图所示,OBD接口共有16个引脚(可参考 ISO 15031-3)。 1、引脚1,3,8,9,11,12,13 引脚1,3,8,9,11,12,13由主机厂进行分配。 2、引脚2 如果车辆中使用SAE J1850 10,4 VPW(可变脉冲)来提供…

【React】精选10题

1.React Hooks带来了什么便利? React Hooks是React16.8版本中引入的新特性,它带来了许多便利。 更简单的状态管理 使用useState Hook可以在函数组件中方便地管理状态,避免了使用类组件时需要继承React.Component的繁琐操作。 避免使用类组件…

小红书运营 变现方法总结(精)

大家好,我是网媒智星,今天跟大家分享一下小红书运营方面的知识,怎样利用小红书变现?全篇倾情干货输出,认真学习,保证您收获多多。 首先,让我们来分析一下小红书平台的优势。关于卖东西&#xff…

Open3D (C++) 基于拟合高差的点云地面点提取

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示1、原始点云2、提取结果四、相关链接系列文章(连载中。。。): Open3D (C++) 基于高程的点云地面点提取Open3D (C++) 基于拟合平面的点云地面点提取Open3D (C++) 基于拟合高差的点云地面点提取</

vue + less 实现动态主题换肤功能

文章目录 前言一、前提条件1. 初始化vue项目2. 安装插件 二、新建文件夹主题theme1.style.less文件2.model.js文件3.theme.js文件theme文件夹最终效果 三、修改vue.config.js文件四、页面上的具体使用1. index.vue 页面2. index.vue 页面注意点说明3. index.vue 效果 五、在js中…

VSCode使用SSH无密码连接Ubuntu

VSCode使用SSH无密码连接Ubuntu 前提条件&#xff1a; 1. 能够正常使用vscode的Remote-ssh连接Ubuntu 2. Ubuntu配置静态ip&#xff08;否则经常需要修改Remote-ssh的配置文件里的IP&#xff09; 链接-> ubuntun 18.04设为静态ip&#xff08;.net模式&#xff0c;可连接…

shell使用总结

一、语法 数据类型 字符串 如果没有特殊说明&#xff0c;数据类型默认都是字符串。常见字符串操作有&#xff1a; 已知变量strabcabc 1、切片 echo ${str:1:3} #${varName:offset:size},分页取子串 echo ${str:2} #${varName:offset},偏移offset个字符取至末端 echo …