IP的情况下,访问接口都正常,使用域名访问,报错400 badrequest

经确认,ssl配置无问题,证书文件本身无问题

最后查出来原因,是域名格式的问题,原域名中包含_,需要修改为-

排查过程:

1. 检查配置ssl:

server:
port: 9443
ssl:
key-store: classpath:xxx.xx.com.pfx
key-store-type: PKCS12
key-store-password: ******

2. 由于程序本身经过多层中转,所以在容器内部,

  

vi /etc/hosts

  新增本地的域名解析,如 xx.xx.xx.xx 域名.com

  容器内部验证(使用IP访问正常):  

curl -kv https://IP地址/test

  使用域名访问  

curl -kv https://域名.com/test

  请求异常400 bad request

  在后端程序中,新增logging.level.org.springframework.web的值为DEBUG
  只有正常200请求的日志,于是再修改日志等级为TRACE
  在修改为TRACE后,就发现程序在未被请求的情况下,一直报错,
  SSL握手一直报错,一直重连,一直报错
  精简一下:

  

org.apache.tomcat.util.net.NioEndpoint Error during SSL handshake
java.io.IOException: Connection reset by peer java.lang.NullPointerException: null
at org.apache.tomcat.util.net.SecureNioChannel.close

  

  经过这个日志,很明显有Secure,所以我又开始考虑是否证书有问题
  但是,证书已经确认过,文件本身是正常的,
  于是我再修改hosts文件,将本地ip,随便加了一个域名 aa.xx.com.cn,测试接口 

curl -kv https://aa.xx.com.cn/test

  发现正常,于是又改成原目标域名,发现还是400 bad request

  终于,想到了或许是域名格式的问题,可又想,这证书申请时,相关负责人也没有说格式异常,打回重新申请啊?
  于是在百度上搜了一下"域名能不能包含下划线",搜索出来的结果表明可以包含_
  所以又在bing搜了一下“Can the domain name include underscores”,结果表明不可以包含
  然后又找到了官方一点的说法,
  文档地址:https://www.ssl.com/faqs/underscores-not-allowed-in-domain-names/?nowprocket=1
  至此,终于找到了问题原因

IP服务正常,域名服务异常,报400 badrequest的更多相关文章

  1. springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本 get请求报400 异常信息为 The valid characters are defined in RFC 7230 and RFC 3986

    1.springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本而之前用的是tomcat7    get请求报400 异常信息为 The valid characters are ...

  2. nginx转发成功报400 bad request,服务端未收到请求

    nginx转发成功报400 bad request,服务端未收到请求 解决办法: upstream后面不要跟下划线 例如: upstream auth_service{ server 30.4.164 ...

  3. 解决SpringBoot连接Nacos集群报400问题

    问题描述 搭建一个Nacos集群,使用 SpringBoot 程序连接 Nacos 集群,在启动的时候报异常,程序启动失败,而后程序假死.详细控制台日志信息如下: failed to req API: ...

  4. 访问本机的WEB API 报400错误

    当时用的IP是127.0.0.1 报400错误,换成 localhost 后正常.

  5. cdnbest里站点域名不同步到节点,报400错误的一般原因

    报400错误一般是站点里的域名没有同步到节点上面的原因,产生的原因一般是下面两点原因: 1.检查节点列表如下图所示的状态是否打钩,这是节点和主控的通信状态,打叉表示连接有问题 这里打叉的几种原因(1) ...

  6. feign服务端出异常客户端处理的方法

    在使用feign进行远程方法调用时,如果远程服务端方法出现异常,客户端有时需要捕获,并且把异常信息返回给前端,而如果在开启熔断之后,这个异常会被消化,所以说,如果希望拿到服务端异常,feign.hys ...

  7. nginx+tomcat报400的坑

    nginx+tomcat的网页,在手机上通过浏览器可以正常访问,但是在自己的app的webview中访问就报400.查了访问日志,每次app中访问该页面,tomcat中就出现一个GET null的申请 ...

  8. tomcat拦截特殊字符报400,如 "|" "{" "}" ","等符号的解决方案

    最近在做一个项目,需要对外暴露两个接口接收别人给的参数,但是有一个问题就是对方的项目是一个老项目,在传参数的时候是将多个字符放在一个参数里面用"|"进行分割,然而他们传参数的时候又 ...

  9. Python基础中所出现的异常报错总结

    今天我们来探索python中大部分的异常报错 首先异常是什么,异常白话解释就是不正常,程序里面一般是指程序员输入的格式不规范,或者需求的参数类型不对应,不全等等. 打个比方很多公司年终送苹果笔记本,你 ...

  10. Yii2请求,报400错误

    出现400错误是yii2.0的csrf防范策略导致 在components里面添加request配置如下: 'request' => [ // !!! insert a secret key i ...

随机推荐

  1. Java中的栈、堆和常量池

    Java程序是运行在JVM(Java虚拟机)上的,因此Java的内存分配是在JVM中进行的,JVM是内存分配的基础和前提. Java程序的运行会涉及以下的内存区域: 寄存器:JVM内部虚拟寄存器,存取 ...

  2. Linux 更新网络时间

    下载包 yum install -y ntpdate 同步网络时间 ntpdate 0.asia.pool.ntp.org 若上面的时间服务器不可用,也可以改用如下服务器进行同步: time.nist ...

  3. 硬核案例分享,一文带你拆解PHP语言体系下的容器化改造

    本文分享自华为云社区<PHP语言体系下的容器化改造,助力夺冠集团应用现代化>,作者: HuaweiCloudDeveloper. 1.摘要 本文主要介绍了PHP语言体系应用现代化改造上云的 ...

  4. nodejs,express设置允许跨域请求

    express设置允许跨域请求 //设置跨域访问 app.all("*", function (req, res, next) { //设置允许跨域的域名,*代表允许任意域名跨域 ...

  5. SQLServer 的Distinct

    distinct去除重复的数据(distinct是对整个结果集进行数据重复处理,不是针对某一列) -> 检查返回不重复的数据(对于整条记录不重复才会去除,如ID不一样) 用法:select di ...

  6. 写了一个json小工具,希望大家体验(Mac平台)

    用rust写了一个json小工具"JSON PICKER",欢迎大家试用: https://github.com/davelet/json-picker/releases/tag/ ...

  7. 只会建数据库怎么写API?database2api 能帮到你!

    database2api 意为 DataBase to API,即只要有数据库,就可以生成开放 API. database2api 是一款强大而便捷的工具,主要功能是依据现有的数据库自动生成开放的 A ...

  8. Android SDK Build-tools的版本已经高于Android SDK Platform-tools版本 的解决办法

    解决Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder!最近渐渐迁移到Android  ...

  9. locust多进程实现分布式压测遇到的问题

    多进程分布式的实现: locust分布式时,需借助命令locust 一个一个启动worker,在使用中有点繁琐, 下面借助于多进程,按既定worker数量,一键启动: from locust impo ...

  10. 一文详解 JuiceFS 读性能:预读、预取、缓存、FUSE 和对象存储

    在高性能计算场景中,往往采用全闪存架构和内核态并行文件系统,以满足性能要求.随着数据规模的增加和分布式系统集群规模的增加,全闪存的高成本和内核客户端的运维复杂性成为主要挑战. JuiceFS,是一款全 ...