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方式正常訪問了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM