
OpenAM 14.0.0 を使って SAMLのIdP(Identity Provider) を構築していると、
こんな疑問にぶつかりました👇
「SHA-1はもう危険って言われてるけど、
OpenAMのGUIでSHA-256に切り替える項目が見当たらない…🤔」
実際に調べて設定してみたところ、
GUIの1か所をポチっと変えればOK、という話ではないことが分かりました。
今回は OpenAM 14でSAML署名をSHA-1 → SHA-256へ変更する手順を、
同じところで悩む人向けにまとめます✍️
そもそも何をSHA-256にするのか?🤨
まず大事なポイント👇
❌ パスワード認証方式のSHA
⭕ SAMLアサーション/レスポンスの署名アルゴリズム
OpenAMで言う「SHA-256化」は、
SAMLメッセージの電子署名方式を強化するという意味です。
結論:GUIだけでは完結しない⚠️
先に結論を書くと👇
✅ OpenAM 14はSHA-256対応
❌ GUIに「SHA-256を選択する項目」は存在しない
⭕ 使用する証明書の署名アルゴリズムに依存
つまり、
SHA-256で署名された証明書を使えば、
SAML署名もSHA-256になる
という仕組みです。
① IdPエンティティ設定(GUI)🖥️
まずは管理コンソールから設定を確認します。
設定パス
管理コンソール
→ Federation
→ Entity Providers
→ SAMLv2 Identity Provider
→ 対象のIdPエンティティ
確認ポイント
- Signing Certificate Alias
- Encryption Certificate Alias(必要な場合)
ここで指定している 証明書のalias が重要です🔑
SHA-1証明書を使っていれば、署名もSHA-1のままになります。
② 証明書をSHA-256にする(最重要)🔥
OpenAM側のキーストアに入っている証明書を確認します。
keytool -list -v -keystore keystore.jks
NG例(SHA-1)
Signature algorithm name: SHA1withRSA
OK例(SHA-256)
Signature algorithm name: SHA256withRSA
🔧 対応方法
- SHA-256で署名された証明書を新規作成
- OpenAMの keystore にインポート
- IdPエンティティでその alias を指定
これが一番大事なポイントです💡
③ 署名アルゴリズムを明示する(Advanced設定)🛠️
環境によっては、
署名アルゴリズムを明示しないとSHA-1にフォールバックすることがあります。
設定パス
Configuration
→ Servers and Sites
→ 対象サーバ
→ Advanced
追加するプロパティ
org.forgerock.openam.saml2.signature.algorithm=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
org.forgerock.openam.saml2.xmlsig.digest=http://www.w3.org/2001/04/xmlenc#sha256
📌 OpenAM 14では
GUIに項目が無いケースが多いため 手動追加が定番です。
④ SP側との整合性も忘れずに🤝
IdPだけSHA-256にしても、
SP(Service Provider)が未対応だと失敗します。
チェックポイント👇
- SPがSHA-256署名を許可しているか
- SPメタデータに以下が含まれているか
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
⑤ 最後に再起動🔄
設定変更後は必ず OpenAMを再起動します。
これを忘れると
「設定したのにSHA-1のまま…😇」
という沼にハマります。
よくある勘違いまとめ❌
| 勘違い | 実際 |
|---|---|
| GUIでSHA-256を選べる | 証明書依存 |
| プロパティだけでOK | 証明書更新が必須 |
| OpenAM 14は古いから非対応 | 対応している |
まとめ ✨
✅ OpenAM 14でSHA-256は問題なく使用可能
✅ 鍵は証明書の署名アルゴリズム
✅ IdPエンティティのaliasを見直す
✅ 必要に応じてAdvanced設定を追加
✅ 再起動を忘れない
同じところで詰まっている人の助けになれば幸いです🙏
SAMLまわりは 「分かってる前提」 の情報が多くて辛いですね…。
またハマったら備忘録として残していこうと思います✍️😊


コメント