2

JSR 105 API を使用して XML ドキュメントに署名する必要があります。標準プロバイダーを使用してそれを行う方法はすでにわかっていますが、HSM をサポートするコードが必要です。で、これが問題。

次のように署名を初期化すると:

 XMLSignatureFactory fac;
 fac = XMLSignatureFactory.getInstance("DOM");

HSM (SunPKCS11 プロバイダー) から取得した秘密鍵を使用すると、次の例外/エラーが発生します。

my.exception.InternalServerErrorException: Internal server
error: Create signature problem
Caused by: javax.xml.crypto.dsig.XMLSignatureException: 
java.security.InvalidKeyException: No installed provider supports this key: sun.security.pkcs11.P11Key$P11PrivateKey
at
org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:411) ~[xmlsec-1.5.7.jar:1.5.7]

SunPkcs11 プロバイダで署名ファクトリを初期化すると、次のようになります。

XMLSignatureFactory fac;
fac = XMLSignatureFactory.getInstance("DOM", provider);

私はこの例外を受けています:

Caused by: javax.xml.crypto.NoSuchMechanismException: java.security.NoSuchAlgorithmException: no such algorithm: DOM for provider SunPKCS11-SunPKCS11

少しグーグルで検索したところ、XML 署名で使用されるプロバイダーには JSR 105 拡張子が必要であることがわかりましたが、SunPkcs11 には拡張子がないようです。それがあれば、それはうまくいくでしょう。

オープンソースまたはJava / Oracleが提供するコードを使用してこの状況を解決する方法を知っている人はいますか?

ありがとう、ジョセフ

4

0 に答える 0