java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1016)
at javax.crypto.Cipher.implInit(Cipher.java:791)
at javax.crypto.Cipher.chooseProvider(Cipher.java:854)
at javax.crypto.Cipher.init(Cipher.java:1233)
at javax.crypto.Cipher.init(Cipher.java:1173)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.successfulAuthentication(AbstractAuthenticationProcessingFilter.java:332)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:246)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
... 중략
2. 원인
▶ Java는 기본적으로 JCE 정책을 제공한다.
- 이 정책은 미국의 정책에 따라 128 bit로 키 길이가 제한되어 있어서 이를 초과하는 경우엔 에러가 발생할 수 있다. - TMI지만 군대에서 이런 암호화, 복호화에 대한 대회도 했었던 기억이 난다.
- 반대로 길이를 제한하고 싶다면 java.security 파일에서 crypto.policy를 주석 처리 한다. - JDK 8u151 이상 버전에서는 아래와 같이 두개의 디렉토리로 나뉘어져 있다. %java_home%/jre/lib/security/policy/limited %java_home%/jre/lib/security/policy/unlimited
- %java_home%/jre/lib/security/java.security 파일을 열어 하기 부분을 주석 처리하면 정책 제한을 해제할 수 있다. crypto.policy=unlimited