2013-08-29 2 views
2

Java (즉, javax.xml.crypto.dsig 패키지의 클래스)에서 제공하는 디지털 서명 API를 사용하여 XMl 파일에 서명하는 프로그램을 작성했습니다. 그러나 xml 문서에 서명하려면 아래 문과 같이 요약을 지정하기 전에 서명 컨텍스트를 만들기 위해 개인 키를 제공해야했습니다.Java에서 pkcs11 래퍼를 사용하여 XML 서명

DOMSignContext dsc = new DOMSignContext(priv_key, doc.getDocumentElement()); 

개인 키를 HSM과 같은 안전한 저장소에 저장할 때 xml에 서명하고 싶습니다. Java에서 HSM에 액세스 할 수있는 래퍼 클래스가 있으므로 개인 키 핸들을 얻을 수 있지만 서명에 사용하는 방법을 알지 못합니다. 누군가가 이런 방식으로 XML을 서명하는 방법에 나를 인도 할 수

...

답변

0

서명은 오라클에 의해 제공되는 PKCS # 11 프로 바이더에 의해 지원됩니다. 현재 래퍼 클래스에 C 스타일 핸들이있을 수 있지만 그다지 유용하지는 않습니다. 핸들은 XML 서명 클래스와 함께 사용하기 위해 JCA 공급자 내에 있어야합니다. 그리고 공급자는 오라클이 제공 한 코드 서명 인증서에 서명해야합니다.

PKCS # 11 공급자에서 개인 키를 사용하려면 PKCS # 11 토큰에 동일한 ID가있는 인증서가 있어야합니다. 그런 식으로 결합 된 개인 키/인증서 항목이 "PKCS11"KeyStore에 표시됩니다. 이를 사용하여 XML 데이터에 서명 할 수 있습니다.

+0

저는 여러분에게 위의 가장 중요한 트릭을주었습니다.하지만 PKCS # 11 공급자를 사용하기 전에 극복해야 할 몇 가지 함정이있을 수 있습니다. 해피 코딩 ... –