概要
Visualization Mods(*.modファイル)は以下のいずれかのやり方で署名されますが、利用時には署名を検証・信頼できる必要があります。
- Spotfireアカウントによって署名
- サードパーティコードサイニング証明書によって署名
サードパーティコードサイニング証明書によって署名されたMods(例えばSpotfireコミュニティにて公開されたもの:参考資料)は、署名を検証・信頼するにはインターネット接続が必要となりますが、本記事はインターネット接続ができない環境でこのようなModsを利用する際に発生する問題や対策について情報を整理します。
Spotfireアカウントによって署名されたModsは本資料の対象外です。
Windows標準で搭載されているルート証明書(参考資料)以外から発行されたコードサイニング証明書(社内独自で発行したものなど)によって署名されたModsは本資料の対象外です。
署名を検証・信頼する際に以下の処理のためにはインターネット接続を行うことがあります。いずれかが失敗した場合は無効な署名と判断されます。
- 中間CA証明書のダウンロード、失効検証
- コードサイニング証明書の失効検証
Modsの署名を検証できない、または信頼されていない場合は下図の通りにビジュアライゼーションを正しく閲覧できません。
動作確認環境
本記事は以下の環境で動作確認したうえで作成しています。
- Spotfire Server 14.0 LTS
- Spotfire Analyst 14.0 LTS
- Spotfire Web Player 14.0 LTS
Spotfire Serverのみインターネット接続ができない場合
Spotfire Serverのみインターネット接続ができず、Web PlayerサーバーやAnalyst端末はインターネット接続ができる場合の問題点や回避方法は以下になります。
問題点①、署名者を信頼できない
AnalystまたはWeb Playerで「ファイル」⇒「信頼を管理」画面にて、「署名者を信頼」ボタンを押した際に下記のエラーが発生し、正しく処理できません。
信頼アクションをサーバー上で永続化できませんでした。問題が解決しない場合は、各 mod を個別に信頼してください。
回避方法
Spotfire Server設定変更手順 に従って、下記のコマンドを実行して設定変更してください。
設定変更後には「署名者を信頼」を実施する際に署名者のコードサイニング証明書を検証しなくなり、必ず信頼できます。
config.bat set-config-prop -n "security.code-trust.validate-uploaded-cert" -v "false"
「マイアカウント」ページにて、信頼した署名者(信頼できる mod 開発者)の一覧を確認できます。
Analyst端末やWeb Playerサーバーからインターネット接続ができるため、上記の通りに署名者を信頼しておくことで、AnalystやWeb PlayerからModsを正しく利用できるようになります。
署名者の一括信頼
Spotfire管理者がほかのユーザーをグループ単位で事前に署名者を信頼させておくことも可能です。これで各ユーザーがModsを利用する際には個別に署名者やModsの信頼を実施する必要がなくなります。
Spotfire ServerやWeb Playerサーバーともインターネット接続ができない場合
Spotfire ServerやWeb Playerサーバーともインターネット接続ができず、Analyst端末はインターネット接続ができる場合の問題点や回避方法は以下になります。
※Modsの利用可否はWeb Playerクライアント(Consumer、ブラウザ側)のインターネット接続有無とは関係ありません。
問題点①、署名者を信頼できない(同上)
注意事項として、署名者を信頼したとしてもModsを必ず利用できるわけではありません。
Modsの閲覧を実施するAnalyst端末やWeb Playerサーバーからインターネット接続ができない場合、署名者がすでに信頼されていてもModsを利用できません。さらに、署名者の信頼とともに下記の「Require valid signature to allow trust」をFalseに設定してもModsを利用できません。
代わりに下記を参考に個別のModsを信頼してください。
問題点②、個別のModsを信頼できない
※Analyst端末からインターネット接続ができるため、Analystの場合は本件問題は発生しません。
Web Player上で分析を開いた後、「ファイル」⇒「信頼を管理」画面にて個別のModsの署名が「無効な署名」として表示されてしまいます。
「レビュー」ボタンからModsの信頼を実施しようとする際に「信頼」ボタンがグレー表示で押せません。
また、Analyst(インターネット接続可能)にて信頼したModsはWeb Player(インターネット接続不可)では「無効な署名」と表示されますが、(デフォルト設定でも)Modsは正しく利用できます。
回避方法
Spotfire管理者権限でAnalystへログインし、ツール⇒管理マネージャーを開いて、下記の設定項目をFalseに変更すると、「無効な署名」であっても個別のModsを信頼できるようになります。
・Application ⇒ Trust
・Require valid signature to allow trust デフォルト:空白(True)
※設定変更後にAnalyst、Web Playerサービスを再起動して反映させる必要があります。
上記の通りに設定変更を実施した後に、「無効な署名」であっても「信頼」ボタンを押してModsを信頼できるようになります。
「マイアカウント」ページにて、個別に信頼したModsの一覧を確認できます。
個別のModsを信頼すると、インターネット接続の有無にかかわらず、AnalystやWeb Playerからは必ず該当Modsを利用できるようになります。
※Analystの場合はログインしている必要があります。オフラインの場合は個別に信頼したModsを利用できない可能性があります。
個別のModsの一括信頼
標準機能では、Spotfire管理者が個別のModsをほかのユーザーに信頼させておくことはできません。
例えば以下のサービスアカウントの場合はログインができないため、管理者が事前に個別のModsを該当アカウントに信頼させないと利用できません。
- Automation Services サービスアカウント:automationservices@SPOTFIRESYSTEM
- Scheduled Updates サービスアカウント:scheduledupdates@SPOTFIRESYSTEM
以下の手順に従い、コマンド「add-code-trust」の非公開引数「--hash <Modsのハッシュ値>」を利用して、個別のModsをほかのユーザーに信頼させることができます。
1.Modsファイル(*.mod)を7-Zipなどの汎用解凍ソフトで開いて、以下のファイルをテキストエディタで開きます。
META-INF\ASiCManifest.xml
下記の部分からハッシュ計算方法(本例:sha512)やハッシュ値(本例:0bDjN+fbaYRYkwn1FknL...)を確認します。
<ns2:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ns2:DigestValue>0bDjN+fbaYRYkwn1FknLg/3cA0wakeCLuCj5D6XWQ5QgqZBxiiBwU9D8AA0JmvwkWQWIVrM8NboQ7pcXqLkvPg==</ns2:DigestValue>
また、Modsのハッシュ値は「ビジュアライゼーション mod のレビュー」画面や「ビジュアライゼーション・タイプ」フライアウトからも確認できます。
・「ビジュアライゼーション mod のレビュー」画面:
Web Player(Consumer)の場合、上記の画面にて「クリップボードにコピー」ボタンを押してコピーを実施するにはHTTPS接続が必要です。
・「ビジュアライゼーション・タイプ」フライアウト
2.OS管理者権限でコマンドプロンプトを起動して、Spotfire Serverのインストール先フォルダへ移動します。
C:\spotfire\spotfireserver\14.0.6\tomcat\spotfire-bin
3.以下のコマンド「add-code-trust」を実行して対象Modsを対象ユーザーに信頼させます。
config.bat add-code-trust -t spotfire -u automationservices@SPOTFIRESYSTEM --hash=sha512=0bDjN+fbaYRYkwn1FknLg/3cA0wakeCLuCj5D6XWQ5QgqZBxiiBwU9D8AA0JmvwkWQWIVrM8NboQ7pcXqLkvPg==
引数:
- -t <Configuration Tool パスワード>:未指定の場合は入力が求められます。
- -u <Spotfireアカウント名>:対象ユーザーを指定します。デフォルトドメイン「@SPOTFIRE」に所属のアカウントは<username>の形式で指定し、それ以外のアカウントの場合は<username>@<domain>の形式で指定します。
- --hash=<sha512>=<Modsのハッシュ値>:上記の1.で確認したハッシュ計算方法やハッシュ値を指定します。
コマンドを正常に実行できた場合のコンソール出力例(Principal xxx now trusts code entity yyy of type mod):
Spotfire管理者はWeb管理画面「Users」から対象ユーザーが個別に信頼したModsの一覧を確認できます。
既知問題(Error inserting trust for principal into the database: Code entity xxx of type MOD not found):
下記のいずれかの場合、対象ModsがどのSpotfireユーザーからも信頼されていない状態となっているため、上記の手順で信頼を実施しようとするとエラーが発生して処理が失敗します。
- ライブラリのインポートを実施してModsをライブラリへインポートした
- 分析内のModsを信頼しないままで分析をライブラリへ保存した
「config.bat add-code-trust」コマンド実行エラーの例:
Error inserting trust for principal into the database: Code entity sha512=l5D/BigLBMy0XkaccQ4nFBmO7cJtqUZF5Fd4XvrVbtnnTJh9H9kQJL5RJfeP2nQ+ohEYQZrbYDGGmG12io/Jcg== of type MOD not found
エラーの原因として、一度も信頼されていないModsはまだシステムによって認識されていないため、該当Modsを「config.bat add-code-trust」コマンドでユーザーに信頼させることはできません。
システムによって認識されているModsの一覧は以下のコマンドで取得できます。
config.bat list-code-entities
回避方法として、該当Modsを任意のSpotfireアカウントから一度手動で信頼してから、再度「config.bat add-code-trust」コマンドで他のユーザーへの信頼を実施してください。
Analystにインターネット接続がない場合
Web Playerサーバーからインターネット接続ができない場合と同様な問題が発生しますので、同じように対処してください。
参考資料
Troubleshooting certificate verification issues in Spotfire