はじめに
Azure ADとSSO連携したサービスがあったのですが、設定から3年近くたち、SAML証明書の更新を促す通知が届きました。
本番サービスでの更新を前に、更新の流れやロールバックの手順を把握するため、検証用のWordPressにSSO設定を行った上で、SAML署名証明書の更新を試してみました。
なお、今回はSAML署名証明書の更新がメインなので、Azure ADとWordPressの間でSSOを構成する手順については割愛します。
主な構成
構成は以下の通りです。
- プラットフォーム
- Azure
- Wordpressが用意しているApp Service版を使用
- アプリケーション
- Wordpress (6.1.1)
- WordPressのSSO用プラグイン
- miniOrange SSO using SAML 2.0 (4.9.29)
作業のイメージ
現状はこのように、SAML署名証明書は(当たり前ですが)1対1になっています。
理想としては、Azure AD側にもWordPress側にも新しいSAML署名証明書の設定を入れておいてから切り替えたほうが、ダウンタイムが無いのですが…
残念ながら、今回はWordPressのSSO用プラグインがこの方法に対応していないので、既存のSAML証明書を上書き更新する方法を取ります。
この方法だと、証明書切り替えのタイミングで若干のダウンタイムが発生するのでご注意ください。
現状のSSO設定の確認
Azure AD側
Azure ADのエンタープライズアプリケーションでSAMLの設定が有効になっています。
証明書はこのように、一つだけアクティブになっています。期限が12/7 9:35:04のものですね。
WordPress側
塗りつぶしばかりで分かりにくいかもしれませんが、Azure ADのSAML署名証明書を証明書 (Base64)形式でダウンロードした中身が、WordPressのSSO用プラグイン側にあるX.509 Certificate設定に入っています。
SAML署名証明書更新のSSO挙動の確認
更新作業前に現状の挙動を確認しておきます。WordPressのログインページにアクセスすると、次のようにSSOのボタンが表示されています。
Azure ADのアカウントでサインイン出来ていることが分かります。
SAML署名証明書の更新
では、いよいよSAML署名証明書の更新を行います。
Azure ADで SAML署名証明書を追加する
最初のステップとして、Azure AD側にSAML署名証明書を追加します。
(追加して複数の証明書を持てるのかどうかはIdP次第のようですが、Azure ADは複数の証明書を保持することが可能です)
SAML 証明書の「編集」から、「新しい証明書」をクリックし、保存します。
有効期限が「2025/12/7 10:18:51」で、状態が非アクティブの証明書が追加されました。
WordPressのSAML署名証明書を更新する
続いて、WordPressのSAML署名証明書を更新します。この時、一時的にSSOは無効になります。
まず、先ほどAzure ADでSAML署名証明書を追加した画面で、追加した証明書(有効期限が「2025/12/7 10:18:51」)をBase64形式でダウンロードします。
ダウンロードした証明書をメモ帳などで開き、中身をコピーして、WordPressのSSO用プラグイン側にあるX.509 Certificate設定に貼り付けます。
なお、この状態でSSOによるサインインを行おうとすると、以下の様なエラーになりました。
Azure ADで SAML署名証明書を切り替える
最後に、Azure AD側でアクティブにする証明書を切り替えます。
追加した証明書(有効期限が「2025/12/7 10:18:51」)をアクティブにします。
追加した証明書(有効期限が「2025/12/7 10:18:51」)がアクティブになりました。
更新後にSSOでサインインできることを確認出来れば更新は完了です。
ロールバックを行う
無事に新しい証明書に移行できればいいのですが、万が一問題が発生してしまった場合は、既存の設定に切り戻すことも可能です。
WordPressのSAML署名証明書をロールバックする
まず、Azure ADで以前のSAML署名証明書(有効期限が「2025/12/7 9:35:04」)をBase64形式でダウンロードします。
先ほどと同様にダウンロードした証明書をメモ帳などで開き、中身をコピーして、WordPressのSSO用プラグイン側にあるX.509 Certificate設定に貼り付けます。
最後に、Azure AD側でアクティブにする証明書を元に戻します。
以前の証明書(有効期限が「2025/12/7 9:35:04」)をアクティブにします。
以前の証明書(有効期限が「2025/12/7 9:35:04」)がアクティブになりました。
切り替え後にSSOでサインインできることを確認出来れば、ロールバックは完了です。
おわりに
本番環境で切り替えるサービスはWordPressではなくまた別のサービスなのですが、大まかな流れは共通なので、手順をテスト環境で確認できてよかったです。
思っていたより簡単だったので、あまり構えずに更新が出来そうです。
SAML署名証明書の更新を検討している方の参考になれば幸いです。
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットでPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。
担当記事一覧