2009年11月18日水曜日

Axis2 1.5/Rampart 1.4

Rampart をいろいろ試していると、暗号化するところで下のような例外が発生してなかなか解決しない。何やら署名/暗号化のアルゴリズムがサポートされていないという例外が出る。
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 件のコメント:

コメントを投稿