공인인증서의 개인키를 읽어보려고 했는데, 생각처럼 되지 않았다.

(Seed 방식의 블록 암호화인데...openssl 명령어로는 그냥 읽을 수가 없어서...흠)



우선 PEAR 설치 후 phpseclib를 다운받아서 실행해보았다.


1) PEAR 설치 - https://jason.pureconcepts.net/2012/10/install-pear-pecl-mac-os-x/

2) phpseclib - http://phpseclib.sourceforge.net


로컬 서버에 설정을 해서 실행해보니 생각처럼 값을 손쉽게 읽어오지는 못했다.


아마도 공인인증서의 키 암호화 방식이 일반적인 방식과는 다르게 구현이 된 것으로 보인다.



아무튼, 조금 찾아보다보니 Bouncy Castle Crypto APIs(http://www.bouncycastle.org/)라는 것이 있다는 것을 알게 되었다.


1) 설치방법 - http://www.bouncycastle.org/wiki/display/JA1/Provider+Installation

2) maven repository

 - http://repo2.maven.org/maven2/org/bouncycastle/bcpkix-jdk15on/

https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on/1.55  (실제 나중에 적용은 1.52로 변경하였다.)



파일을 다운로드 후 jar 파일들을 다음의 폴더로 옮겨주었다.


다음은 내 맥의 설정에 따른다.


/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/jre/lib/ext


파일을 모두 옮긴 뒤에 java.security 에 선언되어 있는 security 패키지를 Bouncy Castle Crypto로 변경해준다.


/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/jre/lib/security

내에 있는 java.security 파일에서 다음의 항목을 수정


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



근데, 다음과 같이 에러가 뜬다...훔


Exception in thread "main" java.lang.SecurityException: JCE cannot authenticate the provider BC

at javax.crypto.Cipher.getInstance(Cipher.java:642)

at CertificateTest.getPrivateKey(CertificateTest.java:129)

at CertificateTest.main(CertificateTest.java:31)

Caused by: java.util.jar.JarException: file:/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/jre/lib/ext/bcprov-jdk15on-155.jar has unsigned entries - org/bouncycastle/LICENSE.class

at javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:462)

at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:322)

at javax.crypto.JarVerifier.verify(JarVerifier.java:250)

at javax.crypto.JceSecurity.verifyProviderJar(JceSecurity.java:161)

at javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:187)

at javax.crypto.Cipher.getInstance(Cipher.java:638)

... 2 more


아래 내용으로 해봤는데, 잘 안된다...함 더 알아봐야 할 듯.

http://stackoverflow.com/questions/16469567/securityexception-with-bouncy-castle


이슈를 해결해기 위해서 해본 작업들이다.

1) 로컬 프로젝트의 libs 폴더 생성 후 프로젝트에 추가

2) jre의 ext 폴더에 담은 후 java.security의 수정

3) 2번의 작업 후 build path에서 jre 삭제 후 다시 add library를 선택하여 다시 system jre를 추가



찾아 헤매다가 결국은 해결을 했는데, 155 버전이 아닌 152 버전으로 변경 후 인증 관련 이슈가 모두 사라졌다.


으앙~


+ Recent posts