1. 程式人生 > >Caused by: java.lang.RuntimeException :HMAC-SHA1 not supported

Caused by: java.lang.RuntimeException :HMAC-SHA1 not supported

本次問題解決花費了一天時間,問題描述如下:

因專案使用了阿里雲簡訊功能,涉及到的三方包有:sdk-core-3.3.1.jar、aliyun-java-sdk-dysmsapi-1.0.0.jar

專案使用jetty啟動,在本地呼叫一直沒有問題,故已經排除程式碼問題,但在centos7上啟動伺服器後訪問介面一直報錯:RuntimeException("HMAC-SHA1 not supported.")


首先說明下,使用tomcat形式啟動應用,呼叫介面無任何問題,所以懷疑是jetty啟動是載入的jre不對

經常不斷排查且查詢資料,定位到最後的加密演算法走的是/usr/local/java/jre/lib/ext/sunjce_provider.jar  該檔案,所以懷疑是程式進行加密計算時沒有找到該jar,於是將該jar拷貝至專案的lib中,但問題依舊沒有解決,

後來在/usr/local/java/jre/lib/security/java.security 檔案中加入了以下程式碼(本專案採用jdk1.8):


重啟伺服器後問題得到解決,至於問題的原因還不是很清楚,只能說是加密演算法的包沒找到,找到之後也不支援該jre的演算法提供

希望能幫助到大家(sunjce_provider.jar 和java.security 配置檔案都需要做調整才能達到可以使用的目的

大家遇到此問題,建議換一臺伺服器或者更換jdk版本試試,首先確保程式沒有問題,再來確定環境問題