今天做接口的時候 遇見這個問題,裝載cem,pfx等證書的時候:
final char[] kp = HttpClientUtil.str2CharArray(keyPasswd);
KeyManagerFactory kmf = KeyManagerFactory.getInstance(X509);
KeyStore ks = KeyStore.getInstance(HttpClientUtil.PKCS12);
ks.load(keyFileInputStream, kp);
kmf.init(ks, kp);
在 ks.load的時候 報java.security.InvalidKeyException: Illegal key size 異常,錯誤找了好久,沒有發現是哪的原因,因爲 程序昨天的時候還是好使的。
所以就排除了是代碼的問題。
唯一不同的就是 運行的容器,jdk等環境問題。
這樣最大的原因就處在jdk上,本次使用的是jdk7,但是項目在編譯的時候用的版本是1.6 可能就是這個問題了,
在將complier修改成1.7後,也就是IDE 默認的jdk後,問題解決了。
所以這個問題就可能是 complier 的jdk版本和當前jdk的版本不一致的原因,再次需要更新jdk下的一些文件,詳見一下鏈接:
http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters