2013-04-11 2 views
17

Java 보안 API를 사용하여 디지털 서명 (PKCS7)을 생성 중입니다. 다이제스트 알고리즘은 SHA-256이고 암호화 알고리즘은 RSA (SHA256withRSA)입니다.WAS 6.1 잘못된 sha256withrsa 서명을 생성하는 IBMJCE 제공자

로컬 컴퓨터에서 SunRsaSign 공급자를 사용하면 일부 콘텐츠에서 서명이 생성되었습니다. WAS 8.0.0.2에서 IBMJCE 공급자를 사용하여 동일한 내용으로 동일한 서명을 생성 할 수있었습니다.

그러나 문제는 WAS 6.1로 마이그레이션해야한다는 것입니다. 이제 생성 된 서명은 위의 2 가지 경우에서 생성 된 서명과 다릅니다. 모든 3 가지 경우에 생성 된 메시지 요약을 확인했는데 3 가지 경우 모두 동일하지만 WAS 6.1의 경우 서명이 다릅니다.

SHA256withRSA 암호화와 관련하여 WAS 6.1의 IBMJCE 제공자에 알려진 문제점이 있습니까? 모든 포인터 크게 감사하겠습니다. 감사합니다

+3

다이제스트를 확인하는 데 +1이 동일했습니다. –

+0

CMS 형식 전체 또는 PKCS # 1 형식 만 확인 했습니까? 해시를 어떻게 만들었습니까? –

+0

전체 CMS 형식 (PKCS # 7)을 확인했습니다. 마지막 4 줄만이 달랐습니다. 서명에서 다른 부분은 SIGNING_TIME 이후에 오는 암호화 된 다이제스트라는 것을 알고 있습니다. (나는 SIGNING_TIME_OID와 같은 날짜/시간을 사용하고있다). –

답변

1

정말 문제가 있습니까? 내가 아는 바로는 이것을 적용해야합니다.

signature = sign(message) 
verify(signature) == message 

모든 서명이 동일해야한다는 요구 사항은 없습니다. 그렇다면 그 서명을 검증하는 데 정말로 문제가 있습니까?

0

동일한 문제가 있었으며 Webspshere에 SUNJCE를 사용하도록했습니다. 여기 단계가 있습니다.

그래서 IBM 웹 스피어 콘솔에서 일반 JVM 인수 응용 프로그램 서버> 서버> 프로세스 정의> JVM (Java Virtual Machine)

봐로 이동하고 다음을 추가합니다.

-DamCryptoDescriptor.provider=SunJCE -DamKeyGenDescriptor.provider=SunJCE 

그런 다음 java.security 파일의 제공자 목록에 다음 Sun 제공 업체를 추가

C:\Program Files\IBM\SDP\runtimes\base_v7\java\jre\lib\ext\sunjce_provider.jar 

변경

C:\Program Files\IBM\SDP\runtimes\base_v7\java\jre\lib\security\java.security 

C:\JAVA\jdk1.6.0_34\jre\lib\ext\sunjce_provider.jar 

을 복사.

#This will help Websphere to load 
security.provider.13=com.sun.crypto.provider.SunJCE 
security.provider.14=sun.security.provider.Sun 
security.provider.15=sun.security.rsa.SunRsaSign 
security.provider.16=sun.security.jgss.SunProvider 

희망이 도움이됩니다.