zoukankan      html  css  js  c++  java
  • javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

    前言

    今天一个朋友让我帮他做一下tomcat的https配置,中间遇到了标题中这个错误,因此记录了一下过程,服务器、域名、证书、tomcat都已经准备好,就是需要配置一下即可,用的是阿里云的证书服务,也是通过阿里云的证书服务生成的证书文件。

    配置步骤

    • 通过阿里云控制台下载tomcat的https证书文件,证书文件很多,这里是点击tomcat选项下的下载按钮。
      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的配置文件:
    start

    由于没有配置过tomcat的https目录,因此就直接按照阿里云的帮助文档来配置了,文件如下:
    阿里云配置

    https是443端口,因此将图中的端口改为443,并将证书名和密码字段修改即可。

    重启tomcat服务器,启动成功,通过http方式访问正常,但是通过https访问时tomcat控制台出现标题中的这个错误:
    错误

    由于是第一次配置tomcat的证书,以往都是通过其他方式,因此也不是十分确定错误在哪里,tomcat版本?或者是jdk版本?脑海中闪过几个原因,但是通过http访问没问题,证明只是和刚刚的https配置有关。
    http

    解决方案

    因此在网络上查了半天,但是都没有找到确切的答案,也没解决掉问题,一段时间无果后,又看了一遍错误,protocol is disabled or cipher suites are inappropriate,就感觉是不是protocol或者cipher参数配置有问题,然后就开始针对几个参数做了几次修改,最终可以正常通过https访问网站了。
    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方式正常访问了。

  • 相关阅读:
    高并发场景之RabbitMQ
    后台任务利器之Hangfire
    【Spring】Redis的两个典型应用场景--good
    【Spring】如何在单个Boot应用中配置多数据库?
    Spring Boot中集成Spring Security 专题
    RestTemplateIntegrationTests
    Spring REST实践之客户端和测试
    Android 高仿豌豆荚 一键安装app 功能
    使用Android studio下载github上的工程及问题解决
    Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)
  • 原文地址:https://www.cnblogs.com/han-1034683568/p/7009096.html
Copyright © 2011-2022 走看看