こんにちは、Sitecore技術担当の池崎です。
この記事について
この記事ではローカルマシン、あるいはVM上に作成したSitecoreの開発環境における自己署名証明書の更新方法について記載します。
私は有効期限が切れる度に毎回更新方法が思い出せず調べているので、今後もう調べなくてもいいように忘備録も兼ねます。
セキュリティ保護された自己署名証明書の作成
- Powershellで以下のコマンドを実行します。
- 注釈1 -DnsName "www.est.dev.local(サイトのホスト名)"名前の部分はバインドするサイトのドメインと一致していないと保護されている扱いにならないので注意してください。
- 注釈2 -CertStoreLocation "cert:\LocalMachine\Root"には直接作成することはできません。この後の手順で"cert:\LocalMachine\My"から"cert:\LocalMachine\Root"に移動します。
- 注釈3 -NotAfter (Get-Date).AddYears(100) ここで自己署名証明書の有効期限に任意の期限を設定できます。この場合100年後を指定しています。
New-SelfSignedCertificate -Subject "www.est(任意の名前)" -DnsName "www.est.dev.local(サイトのホスト名)"
-CertStoreLocation "cert:\LocalMachine\My" -KeyAlgorithm RSA -KeyLength 2048
-KeyExportPolicy Exportable -NotAfter (Get-Date).AddYears(100)
- certlm.mscを呼び出します。
- 注釈4 certmgr.mscには表示されませんでした。
- certlm.mscで個人の証明書を開き、先ほど1の手順で作成した証明書を探します。
証明書をクリックしてウインドウを開き、詳細タブのファイルにコピーからエクスポートしてpfxファイルを作成します。
その際に任意のパスワードを設定します。 - 作成したpfxファイルを実行しローカルコンピュータに対してインポートします。
パスワードを入力して配置場所に信頼されたルート機関証明を選択します。- 注釈5 この手順を行わないと保護された扱いになりません。
- IISを使用して作成した証明書をサイトにバインドします。
- 注釈6 以上の手順を実施すると信頼されたルート機関証明と個人フォルダの両方に同名の証明書が作られますが、個人に作成した証明書を消してはいけません。IISのバインドで選択可能な証明書は個人に存在するものだけであるためです。
証明書を更新したSitecore関連アプリに対して実施すべきこと
Sitecore , Identity Serverの証明書を変更した場合
- 以下の手順で証明書対してアクセス許可を付与します。
- certlm.mscを呼び出します。
- 個人フォルダ以下にある変更した証明書を探します。
- 右クリック > すべてのタスク > 秘密キーの管理を選択します。
- セキュリティのユーザーに以下をフルコントロールで追加します。
- 証明書を使用するサイトのアプリケーションプールID(IIS AppPool\[アプリケーションプール名] )
xConnectの証明書を変更した場合
- 以下の手順で証明書対してアクセス許可を付与します。
- certlm.mscを呼び出します。
- 個人フォルダ以下にある変更した証明書を探します。
- 右クリック > すべてのタスク > 秘密キーの管理を選択します。
- セキュリティのユーザーに以下をフルコントロールで追加します。
- xConnectサイトのアプリケーションプールID
- SitecoreサイトのアプリケーションプールID
- IUSR
- IIS_IUSRS
- SERVICE
- 以下の手順でSiitecoreのconnectionstring.configのThumprintを書き換えます。
- Sitecoreの\App_Config\connectionstring.config を開きます。
- connectionstring.config 内に書かれているThumprintの値を全て新しいxConnectの証明書の拇印に置き換えます。
終わりに
以上で証明書を入れ替えたときに実施する作業は終了です。
実施作業をひとまとめにしたので、これを読んだ方の調べたり悩んだりする時間を減らせたら幸いです。