本次问题解决花费了一天时间,问题描述如下:
因项目使用了阿里云短信功能,涉及到的三方包有: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版本试试,首先确保程序没有问题,再来确定环境问题