javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites
时间:2022-05-04
本文章向大家介绍javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites ,主要内容包括前言、配置步骤、https方式访问tomcat报错、解决方案、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
前言
今天一个朋友让我帮他做一下tomcat的https配置,中间遇到了标题中这个错误,因此记录了一下过程,服务器、域名、证书、tomcat都已经准备好,就是需要配置一下即可,用的是阿里云的证书服务,也是通过阿里云的证书服务生成的证书文件。
配置步骤
- 通过阿里云控制台下载tomcat的https证书文件,证书文件很多,这里是点击tomcat选项下的下载按钮。
- 把证书文件传到linux服务器,如
21xxxxx.zip
。 - 进入tomcat安装目录,比如
/opt/tomcat-8.0
,并创建cert目录(这个目录名可任意设置,用来存放证书),并把证书的压缩包移到此文件夹中,解压。
#进入tomcat目录
cd /opt/tomcat-8.0
#创建cert目录
mkdir cert
#进入cert目录
cd cert
#移动证书文件至当前目录
mv /home/user1/21xxxxx.zip ./
#解压证书文件
unzip 21xxxxx.zip
- 进入tomcat的配置文件目录,修改server.xml配置文件。
cd /opt/tomcat-8.0/conf
vi server.xml
- 重启tomcat服务器
https方式访问tomcat报错
初始时的tomcat的配置文件:
由于没有配置过tomcat的https目录,因此就直接按照阿里云的帮助文档来配置了,文件如下:
https是443端口,因此将图中的端口改为443,并将证书名和密码字段修改即可。
重启tomcat服务器,启动成功,通过http方式访问正常,但是通过https访问时tomcat控制台出现标题中的这个错误:
由于是第一次配置tomcat的证书,以往都是通过其他方式,因此也不是十分确定错误在哪里,tomcat版本?或者是jdk版本?脑海中闪过几个原因,但是通过http访问没问题,证明只是和刚刚的https配置有关。
解决方案
因此在网络上查了半天,但是都没有找到确切的答案,也没解决掉问题,一段时间无果后,又看了一遍错误,protocol is disabled or cipher suites are inappropriate
,就感觉是不是protocol或者cipher参数配置有问题,然后就开始针对几个参数做了几次修改,最终可以正常通过https访问网站了。
修改后的配置如下:
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
#证书文件目录
keystoreFile="cert/21xxxxxxx.pfx"
keystoreType="PKCS12"
#密码
keystorePass="21xxxxxxx"
clientAuth="false"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
/>
与阿里云给出的配置有些不同,protocol参数由"HTTP/1.1"修改为"org.apache.coyote.http11.Http11NioProtocol",ciphers参数删除了,SSLCipherSuite也删除了,可以通过https方式正常访问了。
- AngularJS入门心得4——漫谈指令scope
- Enterprise Library深入解析与灵活应用(8):WCF与Exception Handling AppBlock集成[上]
- 苹果就“电池门”公开致歉;微信下拉任务栏新增小游戏;美团打车进入北京
- 新华三《中国城市数字经济指数白皮书》:深圳数字经济发展水平国内居首
- NodeMCU模块写入MicroPython固件
- 如何证明Application Domain的隔离性
- Enterprise Library深入解析与灵活应用(8):WCF与Exception Handling AppBlock集成[下]
- 我所理解的Remoting(1):Marshaling & Activation[上篇]
- oracle 12c 常见报告获取-AWR
- 人人公司收购美国卡车社区 Trucker Path,未来或探索无人驾驶
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[下篇]
- 《WCF的绑定模型》博文系列汇总[共6篇]
- 快来看看难民营里的高科技超市
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[中篇]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发实现AlertDialog中View的控件设置监听功能分析
- 详解Android 语音播报实现方案(无SDK)
- Android实现中轴旋转特效 Android制作别样的图片浏览器
- Android使用DrawerLayout实现双向侧滑菜单
- Android实现3D推拉门式滑动菜单源码解析
- Android编程处理窗口控件大小,形状,像素等UI元素工具类
- Android开发实现的Log统一管理类
- Android中可以作为Log开关的一些操作及安全性详解
- 实例详解Android Webview拦截ajax请求
- Android给布局、控件加阴影效果的示例代码
- XListView实现下拉刷新和上拉加载原理解析
- Android实现QQ侧滑(删除、置顶等)功能
- Android通过XListView实现上拉加载下拉刷新功能
- Android自定义View实现圆形切图效果
- Android仿iOS侧滑退出当前界面功能