エッジ暗号化プロキシの「署名の検証に失敗しました」エラーまたは getAsJsonPrimitive および verifyConfigurationSignatures からの NullPointerException Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } エッジ暗号化プロキシを起動しようとすると、ログファイル $proxy_installation_location/logs/edgeencryption.log に次のようなエラーが記録されます。 2017-02-03 12:06:44,749 ERROR Error occurred during proxy startup: Failed get edge encryption configuration from the ServiceNow instance: Encryption configuration for field '"change_request"."short_description"' failed signature validation. Contact support to restore the encryption configurations. または、プロキシが起動しないようにする次の NullPointerException が発生します。 2017-08-19 09:12:45,327 ERROR Error occured during proxy startup java.lang.NullPointerException at com.snc.edgeencryption.util.JsonUtil.getAsJsonPrimitive(JsonUtil.java:44) at com.snc.edgeencryption.encryption.EncryptedFieldsManager.verifyConfigurationSignatures(EncryptedFieldsManager.java:221) at com.snc.edgeencryption.encryption.EncryptedFieldsManager.updateEncryptedFields(EncryptedFieldsManager.java:152) at com.snc.edgeencryption.encryption.EncryptedFieldsManager.readEncryptedFields(EncryptedFieldsManager.java:96) at com.snc.edgeencryption.CloudEdgeConfigClient.startupPing(CloudEdgeConfigClient.java:202) at com.snc.edgeencryption.CloudEdgeConfigClient.start(CloudEdgeConfigClient.java:345) at com.snc.edgeencryption.CloudEdge.start(CloudEdge.java:151) at com.snc.edgeencryption.Main.main(Main.java:30) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) at java.lang.Thread.run(Thread.java:748) これは、ログファイルのedgeencryption.logの例のように、エッジ暗号化ルールでも確認できます。 2019-01-29 23:42:30,433 エラーエッジ暗号化ルール:「CustomJson」に有効な署名がありません 2019-01-29 23:42:30,512 エラー エッジ暗号化ルールの同期データマネージャーの更新中にエラーが発生しました:1 つ以上のレコードが署名の検証に失敗しました。これが解決されるまでプロキシを更新しません。 これがルールに見られる場合、同じ解決策が適用されます。以下では、影響を受けるルールに対してこれを行います。 Symptoms<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } edgeencryption.logファイルに記載されているエラーを参照してください。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } プロキシとインスタンス間のデジタル署名チェックが失敗します。 デジタル署名について: プロキシは、エッジ暗号化のすべての設定とルールの署名を検索して検証します。プロキシが信頼するには、署名が一貫している必要があります。 プロキシに信頼できない設定がある場合、プロキシ自体がロックされます。今あるもので実行されますが (暗号化は引き続き行われます)、新しいルールや構成は適用されません。プロキシは、構成 (encryptionconfiguration.json とルール フォルダー) のローカル コピーを保持します。検証に問題がある場合、信頼は解除され、プロキシは復旧までローカル コピーのみを信頼します。 署名は構成をロードするときに検証されています。削除もチェックされます。検証を実行するには、すべてのプロキシに同じ RSA キーが必要です。 署名は、keystore.jceksに追加されるキーの1つです。たとえば、次のkeytoolコマンドを使用して追加されます。 /java/jre/bin/keytool –genkey -alias rsa_key -keyalg rsa –keystore keystore/keystore.jceks -storetype jceks -storepass changeme Edge プロキシは非対称キーを使用して、構成やルールなどに「署名」します。 すべてのベースシステムルールは、ServiceNow 秘密鍵で署名されます。対応する公開鍵は、Edge プロキシに付属するキーストアにあります。プロキシには ServiceNow 公開鍵が必要です。 ユーザーが生成するすべてのルールと構成は、キーストアに存在する別の非対称キーで署名する必要があります。 署名キーのセットアップは、edgeencryption.properties ファイルで行います。 edgeencryption.proxy.signature.keystore.path = keystore/keystore.jceksedgeencryption.proxy.signature.keystore.password = <password>edgeencryption.proxy.signature.keystore.keyalias = rsa_key Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } (1) 1 つのプロキシを停止する $proxy_installation_location/conf/edgeencryption.properties ファイルを編集し、次の 2 つのプロパティを追加します。 edgeencryption.proxy.skip.config.validate = trueedgeencryption.proxy.signature.verify = false プロキシが起動すると、署名の不一致を無視するように指示されます。 (2)このプロキシを起動し、正常に起動することを確認してください。 (3) 他のすべてのプロキシについて、手順 (1) と (2) を 1 つずつ繰り返します。 (4) 「署名の検証に失敗しました」または「エッジ暗号化ルール:1 つ以上のレコードが署名の検証に失敗しました」というエラーが発生した場合は、プロキシ URL を介してインスタンスに再度ログインし、エラーに表示される構成またはルールをログから変更します。フォームエディターで編集して署名を修正します。この例では、これはエラーです。 2017-02-03 12:06:44,749 ERROR:プロキシの起動中にエラーが発生しました:ServiceNow インスタンスからエッジ暗号化構成を取得できませんでした:フィールド「change_request」.「short_description」の暗号化構成 署名の検証に失敗しました。暗号化設定を復元するには、サポートにお問い合わせください。 または、ルールに関するこのエラー: 2019-01-29 23:42:30,433 エラーエッジ暗号化ルール:「CustomJson」に有効な署名がありません2019-01-29 23:42:30,512 エラー エッジ暗号化ルールの同期データマネージャーの更新中にエラーが発生しました:1 つ以上のレコードが署名の検証に失敗しました。これが解決されるまでプロキシを更新しません。 構成の「署名の検証に失敗しました」エラーを修正するには、[エッジ暗号化設定] > [暗号化設定] > [すべて] に移動します。これは、リストビューからではなく、各レコードのフォームビューから個別に行う必要があります 複数選択:> [テーブル] = [変更要求] および [列] = short_description の構成を選択します。これは、[アクティブ] ボックスをオンまたはオフにして保存し、元の値に戻してもう一度保存するだけで修正できます。ルールの場合は、[エッジ暗号化の設定] > [ルール] > [すべて] に移動します。これは、リストビューからではなく、各レコードのフォームビューから個別に行う必要があります 複数選択 -> 署名に問題のあるルールを名前で選択し、[アクティブ] ボックスをオンまたはオフにして保存し、保存してから元の値に戻してもう一度保存します。これにより、インスタンスとプロキシの間で署名が同期されます。 (5)1つのプロキシを停止します。 (6) $proxy_installation_location/conf/edgeencryption.properties ファイルを編集して、次の 2 つのプロパティを削除します。 edgeencryption.proxy.skip.config.validate = trueedgeencryption.proxy.signature.verify = false (7) $proxy_installation_location/cache ディレクトリに含まれるすべてのファイルを削除します。 (8) このプロキシを起動し、正常に起動することを確認します。これで署名の問題が解決されたため、プロキシは問題なく起動するはずです。 (9) 他のすべてのプロキシについて、手順 (5) から (8) を 1 つずつ繰り返します。 注:上記の手順で問題が解決しない場合は、スクリプトインクルードEdgeEncryptedFields_Processorが、実行されたアップグレードによって提供される最新バージョンを使用するように設定されていることを確認してください。Kingston 以降、署名はより安全になるように更新されました。プロキシは、以前よりも多くの構成とルールのフィールドに依存する新しいロジックを使用して署名しています。プロキシがすべての構成とルールを要求したときに、インスタンスがこれらの新しいフィールドを送信することを想定しています。プロキシが Kingston 以降のバージョンで実行されていて、インスタンスに Kingston より前のバージョンの EdgeEncryptedFields_Processor スクリプトインクルードがある場合は、ServiceNow サポートに連絡して、最新バージョンのEdgeEncryptedFields_Processorスクリプトインクルードをインスタンスでアクティブにしてください。 スクリプトインクルードはプライベートであり、インスタンスへのメンテナンスアクセスなしでは変更できないため、サポートは変更要求によってこの変更を行う必要があります。