前提
使用した環境 | バージョン |
---|---|
IIS | Windows Server 2019 Standard Edition |
SQLServer | Windows Server 2012 Standard Edition / SQL Server 2016 Standard Edition(64-bit) |
Orchestrator | 2020.10.11 |
- 下記手順では、旧URL「https://[ホスト名]」を、新URL「https://[EC2インスタンスのパブリック IPv4 DNS]/」に変更します。
- 証明書は、SAN値付き自己署名証明書を発行します。
参照した公式ドキュメント
手順
URLを変更する
-
念のためIISを停止する。(公式の手順にはないが、この後設定ファイルいじるので一応。)
-
UiPath.Orchestrator.dll.config (C:\Program Files (x86)\UiPath\Orchestrator) を修正する。
検索する項目 | 変更前 | 変更後 |
---|---|---|
ExternalAuth.System.OpenIdConnect.Authority | <add key="ExternalAuth.System.OpenIdConnect.Authority" value="https://[OldOrchestratorAddress]/identity" /> | <add key="ExternalAuth.System.OpenIdConnect.Authority" value="https://[NewOrchestratorAddress]/identity" /> |
ExternalAuth.System.OpenIdConnect.RedirectUri | <add key="ExternalAuth.System.OpenIdConnect.RedirectUri" value="https://[OldOrchestratorAddress]/signinsystemopenidconnect" /> | <add key="ExternalAuth.System.OpenIdConnect.RedirectUri" value="https://[NewOrchestratorAddress]/signinsystemopenidconnect" /> |
ExternalAuth.System.OpenIdConnect.PostLogoutRedirectUri | <add key="ExternalAuth.System.OpenIdConnect.PostLogoutRedirectUri" value="https://[OldOrchestratorAddress]" /> | <add key="ExternalAuth.System.OpenIdConnect.PostLogoutRedirectUri" value="https://[NewOrchestratorAddress]" /> |
IdentityServer.Integration.Authority | <add key="IdentityServer.Integration.Authority" value="https://[OldOrchestratorAddress]/identity" /> | <add key="IdentityServer.Integration.Authority" value="https://[NewOrchestratorAddress]/identity" /> |
3. appsettings.Production.json (C:\Program Files (x86)\UiPath\Orchestrator\Identity) を修正する。
-
変更前
"AppSettings": { "IdentityServerAddress": "https://[OldOrchestratorAddress]/identity", ...... }
-
変更後
"AppSettings": { "IdentityServerAddress": "https://[NewOrchestratorAddress]/identity", ...... }
4. SSMSでClientRedirectUris テーブルを開き、https://[OldOrchestratorAddress]/signinsystemopenidconnect の値を持つ [RedirectUri] フィールドを探す。
⇒下図だと、Id=2,5の2件。(Id=2は「http://」なので、手順的には変えなくてもいいのかもしれませんが、今回は変えました。)
5. 下記のクエリを実行し、https://[NewOrchestratorAddress]/signinsystemopenidconnect に変更する。
UPDATE [UiPath].[identity].[ClientRedirectUris] SET RedirectUri = 'http://[NewOrchestratorAddress]/signinsystemopenidconnect' WHERE Id = [上記で確認したId];
UPDATE [UiPath].[identity].[ClientRedirectUris] SET RedirectUri = 'https://[NewOrchestratorAddress]/signinsystemopenidconnect' WHERE Id = [上記で確認したId];
7. ClientPostLogoutRedirectUris テーブルを開き、https://[OldOrchestratorAddress]/ の値を持つ [PostLogoutRedirectUri] フィールドを探す。
⇒下図だと、Id=3,4,5,8の4件。(Id=5は「http://」なので、手順的には変えなくてもいいのかもしれませんが、今回は変えました。)
8. 下記のクエリを実行し、https://[NewOrchestratorAddress]/ に変更する。
UPDATE [UiPath].[identity].[ClientPostLogoutRedirectUris] SET PostLogoutRedirectUri = 'https://[NewOrchestratorAddress]' WHERE Id = [上記で確認したId];
UPDATE [UiPath].[identity].[ClientPostLogoutRedirectUris] SET PostLogoutRedirectUri = 'https://[NewOrchestratorAddress]/' WHERE Id = [上記で確認したId];
UPDATE [UiPath].[identity].[ClientPostLogoutRedirectUris] SET PostLogoutRedirectUri = 'http://[NewOrchestratorAddress]/' WHERE Id = [上記で確認したId];
UPDATE [UiPath].[identity].[ClientPostLogoutRedirectUris] SET PostLogoutRedirectUri = 'https://[NewOrchestratorAddress]/account/login' WHERE Id = [上記で確認したId];
10. Identity Server の appsettings.Production.json(C:\Program Files (x86)\UiPath\Orchestrator\Identity) ファイル内の OrchestratorUrl パラメーターを、Orchestrator の新しいパブリック アドレスで更新する。
- 変更前
"OrchestratorUrl": "https://[OldOrchestratorAddress]",
- 変更後
"OrchestratorUrl": "https://[NewOrchestratorAddress]",
11. IISを起動する。
証明書を差し替える
-
念のためIISを停止する。
-
Powershellを管理者権限で起動し、SAN値付自己署名SSL証明書を作成する。
⇒下記の[サーバ名]、[NewOrchestratorAddress]、[証明書のインポートに使うパスワード]、[証明書のファイル名]の4箇所を環境に合わせて修正する。
$ssc = New-SelfSignedCertificate -FriendlyName "[サーバ名]" -Subject "CN=[NewOrchestratorAddress]" -DnsName "[NewOrchestratorAddress]"
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store( "Root", "LocalMachine")
$store.Open("MaxAllowed")
$store.Add($ssc)
$pass = ConvertTo-SecureString -String "[証明書のインポートに使うパスワード]" -Force -AsPlainText
Export-PfxCertificate -Cert $ssc -FilePath "C:\temp\[証明書のファイル名].pfx" -Password $pass
3. SAN 自己署名証明書をインポートする。
⇒下記の[証明書のインポートに使うパスワード]、[証明書のファイル名]の2箇所を、上で設定したものに合わせる。
$pass = ConvertTo-SecureString -String "[証明書のインポートに使うパスワード]" -Force -AsPlainText
$imported = Import-PfxCertificate -FilePath "C:\temp\[証明書のファイル名].pfx" -CertStoreLocation Cert:\LocalMachine\My\ -Exportable -Password $pass
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store( "Root", "LocalMachine")
$store.Open("MaxAllowed")
$store.Add($imported)
4. 「UiPath Orchestrator」のサイトバインドから、3.でインポートした証明書を参照させる。
6. appsettings.Production.json (C:\Program Files (x86)\UiPath\Orchestrator\Identity) を修正する。
⇒ 5.でコピーした拇印を、"StoreLocation"の"Name"に貼り付ける。
- 変更前
"AppSettings": {
......
"SigningCredentialSettings": {
"StoreLocation": {
"Name": "[旧証明書の拇印]",
"Location": "LocalMachine",
"NameType": "Thumbprint"
}
}
- 変更後
"AppSettings": {
......
"SigningCredentialSettings": {
"StoreLocation": {
"Name": "[新証明書の拇印]",
"Location": "LocalMachine",
"NameType": "Thumbprint"
}
}
7. PowerShellコンソールにて certlm.msc を実行し、[ローカルコンピューター] → [個人の証明書ストア]を開く。新しい証明書を右クリックし、秘密キーの管理をクリックする。
9. オブジェクト名に IIS_IUSRS を指定し、名前の確認をクリックする。
10. アクセス許可画面にて IIS_IUSRS アカウントにフルコントロールが付与されていることを確認し、OKをクリックする。
11. IISを起動する。