x509: cannot validate certificate for xxx because it doesn't contain any IP SANs

项目中有时候需要访问http网站,但如果该网站使用的是自建证书,那client端验证server端证书时,有时候会报错:

x509: cannot validate certificate for xxx because it doesn't contain any IP SANs

碰到这种情况,可以使用下面的方法来解决:

  • server端,在生成证书时添加subjectAltName
  • clinet端,有两种方法:
    • 不适用IP直接方法,通过修改hosts的方式进行域名映射
    • 不进行http的双向验证,以go为例:
client := &http.Client{Transport: &http.Transport{
	TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}}

孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意


本文转载于网络 如有侵权请联系删除

相关文章

  • 如何使用EDI系统进行OFTP连接?

    什么是OFTP?OFTP(ODETTEFileTransferProtocol),即ODETTE(全称TheOrganisationforDataExchangebyTeleTransmissioninEurope)文件传输协议创建于1986年,在EDI中广泛使用。其命名来源于ODETTE组织(欧洲负责数据传输交换的组织)。OFTP创建的目的是满足欧洲汽车工业的电子数据交换(EDI)要求,因此OFTP也多用于汽车行业中。它是根据开放系统互连(OSI)模型的精神设计的,利用CCITTX.25建议提供的网络服务。OFTP2是由DataInterchange在2007年编写的,作为通过互联网、ISDN和X.25网络安全传输商业文件的规范。OFTP1.3的描述可以在RFC2204中找到,而OFTP2的定义在RFC5024中。OFTP2可以点对点或通过VAN(增值网络)间接工作。这意味着OFTP2可以在PUSH或PULL模式下工作,而AS2只能在PUSH模式下工作。OFTP2可以对信息数据进行加密和数字签名,请求签名的收据,并提供高水平的数据压缩。当通过TCP/IP、X.25/ISDN或本地X.

  • 140行Python代码实现Flippy Bird

    140行代码实现FlippyBird话说这游戏中文名叫什么来着,死活想不起来了,算了话不多说,140行实现小游戏系列第二章,依然是简单小游戏,与数独游戏相比,在游戏界面显示上更难一些,但是在逻辑方面更简单一些,需要处理的无非是速度、加速度、时间、位置、碰撞检测,界面方面则要实现整个动态的显示;运行以及玩法:pythonmain.py运行游戏;鼠标点击是暂停,再点击则是继续;空格键进行跳跃;后续扩展:管道的出现可以更加随机,包括位置和长度等,目前是很简单的方式出现;游戏速度可以越来越快,目前是固定的;小鸟的自由落体速度、跳跃速度等需要优化,目前操作感觉没有那么流畅;增加计分系统、开始、重来等按钮;小鸟图,需要的自取游戏截图进行中暂停时死亡时关键代码分析随时间移动的管道可以看到对于这个游戏,实际上移动的是管道而不是小鸟,因此这里主要是处理管道绘制的位置变化,以及整个一个循环的过程,如果屏幕上显示的管道是N个,那么可以想象是N+2个管道在不停地转圈圈出现在我们的界面上就行了;tunnel_list=[x-speedifx-speed>-200else2100forxintunnel_l

  • 21 张速查表,高清图

    随着深度学习的蓬勃发展,越来越多的小伙伴们开始使用python作为主打代码,python有着种类繁多的第三方库,这里为大家从网络上收集了一些代码速查表,希望可以帮你在码代码时提速。基础神经网络线性代数 python基础scipy科学计算 spark 数据保存及可视化 numpypandas bokeh 画图 matplotlibggplot 机器学习 sklearnkeras tensorflow 算法 数据结构复杂度 排序算法

  • Vue中keep-alive组件的理解

    对keep-alive组件的理解当在组件之间切换的时候,有时会想保持这些组件的状态,以避免反复重渲染导致的性能等问题,使用<keep-alive>包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。描述重新创建动态组件的行为通常是非常有用的,但是在有些情况下我们更希望那些标签的组件实例能够被在它们第一次被创建的时候缓存下来,此时使用<keep-alive>包裹组件即可缓存当前组件实例,将组件缓存到内存,用于保留组件状态或避免重新渲染,和<transition>相似它,其自身不会渲染一个DOM元素,也不会出现在组件的父组件链中。<keep-alive> <componentv-bind:is="currentComponent"class="tab"></component> </keep-alive>复制被<keep-alive>包含的组件不会被再次初始化,也就意味着不会重走生命周期函数,<keep-alive>保持了当前的组件的状态,

  • 秋招,如何准备 Java 初级和高级的技术面试?

    作者:hsm_computer 来自:cnblogs.com/JavaArchitect/p/9032323.html本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只有当反复确认能力不行才会下结论。相反,如果候选人给我的印象不错,我也会从多个角度来衡量,以免招进会说但不会干活的“大忽悠”。其实倒也不是我故意要为难候选人,毕竟入职后就是同事,但面试官的职责使然,而且,如果资深的面试官一般也这样。写到这里,恐怕会吓到一些想要面试的朋友,能力强和能力弱都会被多问,那怎么办?这就是本文将要讲到的主题:如何准备Java初级和高级的技术面试。 一.换位思考下,如果你是面试官,你会怎么做1.只能通过简历和面试来衡量,别无他法。如果某位大牛确认能力很行,但面试时无法充分地自证能力,那对不起了,过不了,现实就这样。2.如果面试官由于能力不行,招进来一个大忽悠,那估计会被领导骂。而且再也不会被让面试了,给领导的印象就不好了。所以不能评主观印象,而是会有些客

  • ​50年来最具影响力的十大编程语言!

    作者|javinpaul译者|馨怡责编|屠敏出品|CSDN(ID:CSDNnews)【导语】“适者生存”的自然法则在应用竞争激烈的编程语言界同样适用,而在数百种编程语言中,相对而言,哪些最具影响力?哪些才是开发者们最值得关注的?以下为译文:在软件世界中有各种各样的编程语言,每年还会不断开发新的语言。最近又发布了Scala、Kotlin、Go和Closure,然而事实表明,它们中只有少数能够存活下来。以下10种编程语言对软件开发领域做出了巨大的贡献,成为50年来最具影响力的编程语言。编程语言是软件开发世界中最重要的东西,多年来经常受到人们的评论、争议和改进,或许有些使用编程语言的人还不知道它背后的历史。正如大家都知道JamesGosling是Java之父,但是谁创建了Perl、Pascal、Lisp、Erlang,并不是每个开发人员都能回答上来的。因此,我特意收集并分享以下10种最流行和最成功的编程语言以及它们的创造者。由于我是一名Java开发人员,从Java中获益良多,所以我索性将其放在列表的首位。可能很多C语言程序员不会同意我的观点,因为C语言是最古老的语言,至今仍被频繁地使用。提前

  • LeetCode-26 删除排序数组中的重复项

    ↑点击上面"算法半岛"关注"算法半岛"第一时间接收最新文章>题目:26.删除排序数组中的重复项>难度:简单>分类:数组>解决方案:双指针今天我们学习第26题删除排序数组中的重复项,这是一道简单题。像这样数组的题目经常作为面试题来考察面试者算法能力和写代码能力,因此最好能手写出该题。下面我们看看这道题的题目描述。题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。示例1:给定数组nums=[1,1,2], 函数应该返回新的长度2,并且原数组nums的前两个元素被修改为1,2。 你不需要考虑数组中超出新长度后面的元素。复制示例2:给定nums=[0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度5,并且原数组nums的前五个元素被修改为0,1,2,3,4。 你不需要考虑数组中超出新长度后面的元素。复制说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以“引用

  • 《分布式系统原理介绍》读书笔记

    1、在大型集群中每日宕机发生的概率为千分之一左右;在实践中,一台宕机的机器恢复时间通常认为是24小时。 2、由于网络数据丢失的异常存在,直接决定了分布式系统的协议必须能处理网络数据丢失的情况。 3、如果某些节点的直接的网络通信正常或丢包率在合理范围内,而某些节点之间始终无法正常通信,则称这种特殊的网络异常为“网络分化”。 4、消息乱序是指节点发送的网络消息有一定的概率不是按照发送时的顺序依次到达目的节点。网络报文乱序也是一种常见的网络异常。这就要求设计分布式协议时,考虑使用序列号等机制处理网络消息的乱序问题,使得无效的、过期的网络消息不影响系统的正确性。 5、网络上传输的数据有可能发生比特错误,从而造成数据错误。通常使用一定的校验码机制可以较为简单的检查出网络数据的错误,从而丢弃错误的数据。 6、在设计分布系统的网络协议时即使使用TCP协议,也依旧要考虑网络异常,不能简单的认为使用TCP协议后通信就是可靠的。另一方面,如果完全放弃使用TCP协议,使用UDP协议加自定义的传输控制机制,则会使得系统设计复杂。尤其是要设计、实现一个像TCP那样优秀的拥塞控制机制是非常困难的。 7、分布式系统

  • soql取第一件数据

    Useru=[selectID,NamefromUserLimit1]; 复制   

  • (9)分布式下的爬虫Scrapy应该如何做-关于ajax抓取的处理(一)

    转载请注明出处:http://www.cnblogs.com/codefish/p/4993809.html    最近在群里频繁的被问到ajax和js的处理问题,我们都知道,现在很多的页面都是用动态加载的技术,这一方面带来了良好的页面体验,另一方面,在抓取时或者或少的带来了相当大的麻烦,因为我们知道直接get主页页面url,这些内容是没有办法显示的。那怎么处理这些内容呢?   上图是一个直观的分析,在抓取数据时,我们一般优先考虑到手机端的网站,因为手机端的网站得到数据相对容易,特别是wap协议的网站,其分页方式大多不是ajax分页或者瀑布流的形式,所以抓取相对容易的多。另外在分析到请求头之后,我们可以很方便得到ajax请求地址,这个时候直观的去call这个地址,看能否正常的得到的数据。换了浏览器然后在call一次,看数据能否正常,如果正常,那个url可能就是public的,那在保障一定的频率访问之后就可以很容易的拿到数据。下面我用一个例子来说明分析请求的。     一,打开目标网站,查看加载方式: https://www.abdse

  • 猫狗识别训练

    下载数据集 下载地址:https://www.kaggle.com/c/dogs-vs-cats/data 下载的训练集中有2.5W张猫猫狗狗的图片,我这里只用训练集压缩包就行了,验证集和测试集都可以从中切分。 观察图片可得知命名方式,猫图片为cat.数字.jpg,狗图片为dog.数字.jpg,各有12500张。   规划数据 数据需要分成三份:训练集、验证集和测试集。 我打算使用1.9W张图片作为训练集,4000张图片作为验证集,2000张图片作为测试集。 importos,shutil fromtensorflowimportkeras importmatplotlib.pyplotasplt #原始图片存放目录 origin_dir='./origin/train' #训练数据集存储位置 base_dir='./data' #训练集验证集测试集 train_dir=base_dir+'/train' validation_dir=base_dir+'/validation' test_dir=base_dir+'/test' #如果目录存在先删掉 ifTr

  • Markdown知识

    Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。 本文档取材自菜鸟教程,方面个人学习与后续查询 标题 使用#号可表示1-6级标题,一级标题对应一个#号,二级标题对应两个#号,以此类推。 #一级标题 ##二级标题 ###三级标题 ####四级标题 #####五级标题 ######六级标题 复制 段落格式 段落 Markdown段落没有特殊的格式,直接编写文字就好,段落的换行是使用两个以上空格加上回车 这是一个段落 段落换行 复制 效果如下: 这是一个段落 段落换行 段落后面使用一个空行来表示重新开始一个段落 这是一个段落 新段落 复制 效果如下: 这是一个段落 新段落 字体 *斜体文本* **粗体文本** ***粗斜体文本*** 复制 效果如下: 斜体文本 粗体文本 粗斜体文本 分割线 三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西 *** --- ___ 复制 效果如下: 删除线 如果段落上的文字要添加删除线,只需要在文字的两端加上两个波浪线~~即可 ~~我是删除线~~ 复制 效果如下: 我是删除线 下划线 下划线可以通过HT

  • 解决开启Vue项目缺少node_models包问题

    当我们在安装node、vue-cli后,开启vue项目启动时报错 报错提示如下: 解决办法一: 重新安装node_models cdmy-projectnpminstall(换源安装:npminstall--registryhttps://registry.npm.taobao.org) *****这步很关键最好换源安装否则项目可能依旧不能启动 npmrundev  ***项目启动成功 改方法的弊端每次新开启一个项目都需要重新安装node_models包很麻烦,希望各位大佬提供更好的解决方案

  • Balanced Binary Tree Leetcode

    Givenabinarytree,determineifitisheight-balanced. Forthisproblem,aheight-balancedbinarytreeisdefinedasabinarytreeinwhichthedepthofthetwosubtreesof every nodeneverdifferbymorethan1.   这道题一开始的做法比较简单粗暴。 publicclassSolution{ publicbooleanisBalanced(TreeNoderoot){ if(root==null){ returntrue; } booleanleft=isBalanced(root.left); booleanright=isBalanced(root.right); intl=depth(root.left); intr=depth(root.right); returnMath.abs(l-r)<=1&&left&&right; } publicintdepth(T

  • python 生成推导式

    推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。共有三种推导,在Python2和3中都有支持: 列表(list)推导式 字典(dict)推导式 集合(set)推导式   一、列表推导式 1、使用[]生成list 基本格式 variable=[out_exp_resforout_expininput_listifout_exp==2] out_exp_res:  列表生成元素表达式,可以是有返回值的函数。 forout_expininput_list:  迭代input_list将out_exp传入out_exp_res表达式中。 ifout_exp==2:  根据条件过滤哪些值可以。复制   例一: multiples=[iforiinrange(30)ifi%3is0] print(multiples) #Output:[0,3,6,9,12,15,18,21,24,27]复制   例二: defsquared(x): returnx*x multip

  • 小菜鸟之oracle触发器

    11、触发器说明 2 3触发器是一种在事件发生时隐式地自动执行的PL/SQL块,不能接受参数,不能被显式调用 4 52、触发器类型 6 7根据触发器所创建的语句及所影响的对象的不同,将触发器分为以下3类 8 9(1)DML触发器 10 11对数据表进行DML语句操作(如insert、update、delete)时所触发的触发器,可以分为: 12 13语句级触发器或行级触发器:行级触发器会对数据库表中的受影响的每一行触发一次触发器代码,语句级触发器则只触发一次,与语句所影响到的行数无关 14 15before触发器或after触发器:before触发器在触发事件发生之前执行触发器代码,after触发器则在触发事件发生之后执行 16 17语法: 18create[orreplace]triggertrigger_name 19{before|after}trigger_event 20ontable_name 21[foreachrow] 22[whentrigger_condition] 23trigger_body 24 25语法解释: 26 27trigger_name:触发器名称

  • 12月6日PHPCMS取内容发布管理中的来源

    调取内容发布管理中的来源,如果直接写{$val['copyfrom']}调取出来的内容为 内容|0 ,要先根据“|”进行拆分,然后再写。 示例: <!--新闻开始--> {pc:contentaction="lists"catid="$catid"order="idASC"num="4"moreinfo="1"} {loop$data$key$val} {phplist($copyfrom)=explode('|',$val['copyfrom'])}<!--将来源进行拆分,来源就是作者--> <divclass="row"> <divclass="col-sm-4"> <imgsrc="{$val['thumb']}"class="img-responsivexm_pic"/> </div> <divclass="col-sm-8"> <divclass="ry_info"> <h4><spanclass="ry_sp">新闻名称:</s

  • SqlServer 查看被锁的表和解除被锁的表

    查看被锁的表 selectrequest_session_idspid,OBJECT_NAME(resource_associated_entity_id)tableName fromsys.dm_tran_lockswhereresource_type='OBJECT' 复制    解除被锁的表 declare@spidint Set@spid=74--锁表进程 declare@sqlvarchar(1000) set@sql='kill'+cast(@spidasvarchar) exec(@sql) 复制    原文地址:https://zhidao.baidu.com/question/1947658504489832988.html 你今天为你的梦想努力了吗?

  • Android深度探索与驱动开发(四)

      Linux 网络设备驱动程序由 4 部分组成,分别是网络设备媒介层、网络设备驱动层、网络设 备接口层及网络协议接口层。网络设备媒介层包括各种物理网络设备和传输媒介。对于网络设备 接口层,Linux 系统用 Net_device 结构表示网络设备接口。Net_device 结构保存所有与硬件有关 的接口信息,各协议软件主要通过 Net_device 结构来完成与硬件的交互。网络设备驱动层主要包 括网络设备的初始化、数据包的发送和接收。网络协议接口层提供网络接口驱动程序的抽象接口。初始化(initialize):检测设备;配置和初始化硬件;初始化 net_device 结构。打开(open) 这个方法在网络设备被激活的时候调用,:进行资源的申请和硬件的激活等。open 方法另一个作用是如果驱动程序作为一个模块被装入,则要防止模块卸载时设备处于打开状态。在 open 方法里要调用&

  • 第一个SpringBoot

    目录简介为什么使用springSpirngBoot环境操作步骤访问 简介 SpringBoot是一个用于简化Spring应用的初始化创建和开发过程的框架,简化配置,实现快速开发 为什么使用spring  *创建独立的Spring应用程序   *嵌入的Tomcat,无需部署WAR文件   *简化Maven配置   *自动配置Spring   *提供生产就绪型功能,如指标,健康检查和外部配置   *开箱即用,没有代码生成,也无需XML配置。 SpirngBoot环境 *SpirngBoot2.0(基于Spring5.0) *JDK必须是1.8及以上 *maven3.2以上 *Tomcat8.5及以上 复制 操作步骤 创建一个maven的java工程 传统的web应用需要创建web工程,后期要打包成war包,然后放到tomcat里面。而spirngBoot应用只需要创建一个java工程,后期直接打包可执行的jar包,内置了tomcat。主程序启动的时候默认只扫描主程序类所在的包及其子包。 导入springBoot依赖 <parent> <groupId&g

  • Oracle触发器开发

    开发触发器的注意点 触发器不接收参数 触发器越多,DML操作性能越低 触发器最大为32k,若pl/sql语句太多,可以编写存储过程,在触发器中调用 在触发器的执行部分只能用DML语句(insert、select、update、delete),不能使用DDL语句(create、alter、drop) 触发器中不能包含事务控制语句(commit、rollback、savepoint),因为触发器是触发语句的一部分,触发语句提交、回退时,触发器也被提交、回退了;触发器主体中调用的过程、函数也不能使用事务控制语句 触发器主体中不能声明任何long和blog变量,:new和:old也不能是表中任何long或blog列 一张表最多只能有12个触发器,且同一时间、同一事件、同一类型的触发器只能有一个,各个触发器之间也不能有矛盾 1--insert事件触发器 2beforeinsert/beforeinsertforeachrow 3afterinsert/afterinsertforeachrow 4--update事件触发器 5beforeupdate/beforeupdateforeach

相关推荐

推荐阅读