org.apache.ws.security.WSSecurityException:
WSHandler: Encryption:
error during message processingorg.apache.ws.security.WSSecurityException:
An unsupported signature or encryption algorithm was used
(unsupported key transport encryption algorithm:
No such algorithm: http://www.w3.org/2001/04/xmlenc#rsa-1_5)
一応、原因と解決策がわかったので、記録しておく。
参考URL:No such algorithm: http://www.w3.org/2001/04/xmlenc#rsa-1_5
■ 原因
暗号技術は米国の輸出法で規制されていて、JDK (JRE)のデフォルトでは、制限つきの暗号レベルになっている。
■ 対策
以下のステップで解決
◆Java Cryptography Extension (JCE) を 「Unlimited Strength Jurisdiction Policy Files 6 」に差し替える。
- jce_policy-6.zip をダウンロードして展開する。
- 新しい local_policy.jar と US_export_policy.jar で、{JDK_HOME}/jre/lib/security 下のものを置き換える。詳しくは README.txt参照。
◆対応するセキュリティプロバイダが、実行時に使われるようにする。
- bcprov-jdk16-144.jarをダウンロードする。
- クラスパスに含める。スタンドアロンなら単にjava コマンドの-classpath に含まれるようにする。Web アプリなら、多分 WEB-INF/lib に置けばいいはず。
■ 補足
参考URLと以下の点で違う。
- security.policyファイル に security.provider.nを指定する箇所があるが、無くても大丈夫だった。
- jre/lib/ext には、とりあえず追加しなくても問題なかった。
0 件のコメント:
コメントを投稿