티스토리 뷰

발단
java 환경에서 작업을 진행하던 중 아래와 같은 오류 로그 발생
로컬 작업환경에서는 정상적으로 테스트되었으나 서버상에서 테스트 시 발생

Java security providerexception could not derive key

java rsa decryption is failed

해당 에러가 발생하는 부분에서 사용하고 있는 메소드 확인 시 아래와 같음

import org.bouncycastle.util.encoders.Base64

잘 알려진 JCE(Java Cryptography Extension) 라이브러리 보안 공급자 중 하나인 "bouncycastleprovider"를 호출하다 발생하는 것으로 확인.


원인파악
bouncycastleprovider 사용시 기본 설정하는 부분에 대하여 로컬과 서버 환경을 비교하였음.

 

1. 보안 공급자 목록 확인

로컬
C:\Program Files\Java\jdk1.8.0_202\jre\lib\security\java.security

서버
[JAVA_HOME]/jre/lib/security/java.security
파일 내용
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=sun.security.mscapi.SunMSCAPI

security.provider.11=org.bouncycastle.jce.provider.bouncycastleprovider

security.provider.11 존재 여부 확인 두 환경 모두 존재하여 이상 없음.

 

2.Extension ClassLoader 라이브러리 존재 여부

로컬
C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext

서버
[JAVA_HOME]/jre/lib/ext

해당 경로에 "bcproc-ext-jdk15-145.jar" 파일 존재 여부 확인
로컬환경에서 해당 파일 확인 되나 서버환경에서 해당 파일 존재하지 않음 확인

서버 측 "bcproc-ext-jdk15-145.jar" 현행화 후 application 재기동 후 테스트 정상 확인

 

원인을 확인하던 중 서버의 해당 프로젝트 경로의 라이브러리 폴더 /lib 내에 "bcproc-ext-jdk15-145.jar" 파일이 존재하였으나 해당 에러메시지가 발생하는 것에 대하여 확인이 필요하다 생각이 되었음.

현재 작업 중인 환경은 프로젝트 소스에서 직접 호출하는 것이 아닌 프로젝트 내 다른 jar 파일 내부에서 bouncycastleprovider의 메서드를 호출하는 로직으로 확인됨.
classpath 내 jar 간 참조는 불가하고 jar내 MENIFEST.MF 파일 내 별도 정의가 없었으므로
classpath의 /lib 경로의 파일이 아닌 Extension ClassLoader를 통한 참조를 진행하였음.


* ClassLoader 종류
- Bootstrap ClassLoader : $JAVA_HOME/jre/lib/rt.jar
- Extension ClassLoader : $JAVA_HOME/jre/lib/ext/*.jar
- Application ClassLoader : $CLASSPATH

* ClassLoader 우선순위
상위 ClassLoader에 있는 Class가 우선순위가 높다
Bootstrap > Extension > Application


* ClassLoader에서 로드된 클래스가 참조하는 다른 클래스는 상위의 ClassLoader에서 찾을 수 있어야 함.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함