今天抓取程序出錯(cuò),報(bào)異常
java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
百度一下,很快知道了原因和解決方案
原因:
JDK默認(rèn)禁用了一些加密算法,因?yàn)橛X的這些加密算法的強(qiáng)度不高
解決方案:
將%JAVA_HOME%/jre/lib/security/java.security文件里
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
改為
#jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
重新運(yùn)行異常消失,問題解決
但領(lǐng)導(dǎo)認(rèn)為這個(gè)解決方案可能會(huì)影響別的程序,要求在java命令運(yùn)行參數(shù)里解決這個(gè)問題。
仔細(xì)研讀%JAVA_HOME%/jre/lib/security/java.security文件
發(fā)現(xiàn)線索
#
# Determines whether this properties file can be appended to
# or overridden on the command line via -Djava.security.properties
#
security.overridePropertiesFile=true
復(fù)制java.security文件,注釋掉jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024,文件保持為my.java.security
啟動(dòng)程序 java -Djava.security.properties=./my.java.security DemoApplication,結(jié)果還是拋出異常。
仔細(xì)一看一想,犯了思維定式的錯(cuò)誤,這里不是用my.java.security代替java.security,而是用my.java.security
里的屬性去覆蓋java.security的屬性,#jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024就是沒有jdk.certpath.disabledAlgorithms屬性,還是用的java.security里的屬性jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
這里想明白就很簡單了,把my.java.security里的內(nèi)容刪的只留下
jdk.certpath.disabledAlgorithms=
再次運(yùn)行java -Djava.security.properties=./my.java.security DemoApplication,異常消失,問題解決
圓滿完成任務(wù) V