1. JSSアプリケーションの開発

チュートリアル: Sitecore CA証明書をNode.js用に設定する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

ローカル環境では、Sitecoreインスタンスはプライベート署名された証明書を使用してインストールされます。ただし、これらはルートCAが不明なため、Node.jsによって拒否されます。Node.js 7.3.0以降では、NODE_EXTRA_CA_CERTS環境変数を使用して、既知の追加の証明書をNode.jsに追加できます。

プライベート署名証明書が正しく構成されていない場合、JSSアプリケーションの実行時にコードUNABLE_TO_VERIFY_LEAF_SIGNATUREのエラーが表示されます。例えば:

Error: unable to verify the first certificate
 ...
 type: 'system',
  errno: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE',
  code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
Error occurred while trying to proxy request /sitecore/api/layout/render/jss?item=%2F&sc_apikey={A6AAE4C9-EEFF-4728-BDCB-80292FDB16EC} 
from localhost:3000 to <https://cm.localhost> (UNABLE_TO_VERIFY_LEAF_SIGNATURE)

このチュートリアルでは、プライベート署名されたSSL証明書を受け入れるようにNode.jsを設定するために必要な手順について説明します。

  • Sitecoreコンテナを使用している場合は、Sitecoreインスタンスで使用されている証明書ファイルを特定します。または、SIF Sitecoreインストールの証明書ファイルを作成します。

  • 証明書をNode.js環境に提供します。

Sitecore Containersインスタンスで使用されている証明書ファイルを特定します

DockerベースのSitecoreコンテナーの場合、証明書ファイルはプロジェクトのセットアップ中にmkcertによって作成されました。

証明書の場所を見つけるには、ターミナルのプロジェクトのルートディレクトリで、次のコマンドを実行します。

mkcert -CAROOT

証明書はPEM形式であり、デフォルトではrootCA.pemと呼ばれます。ファイルパスはC:\Users\<username>\AppData\Local\mkcert\rootCA.pemのようになります。

Sitecoreオンプレミス インスタンスで使用する証明書ファイルを作成します

Sitecore Installation Framework (SIF) を使用してインストールされたSitecoreインスタンスの場合、Windows証明書ストアから証明書をエクスポートする必要があります。

証明書をエクスポートするには:

  1. コマンドラインからcertlmを使用するか、「コンピューター証明書の管理」を検索して、ローカルコンピューターのWindows証明書マネージャーを開きます。

  2. Trusted Root Certification > Certificatesで、Sitecore Installation Framework証明書を右クリックし、All TasksをクリックしてからExportをクリックします。

  3. 新しいウィンドウで、Nextをクリックします。

  4. Export File Format画面で、Base-64 encoded X.509 (.CER)を選択し、Nextをクリックします。

  5. ファイル名 (SIFRoot.cerなど) と、.cerファイルを保存する場所を入力します。Nextをクリックし、Finishをクリックします。

メモ

Sitecoreコンテナとオンプレミス インスタンスの両方がある場合は、証明書を1つのファイルにまとめることができます。例えば:

-----BEGIN CERTIFICATE-----
{your mkcert certificate}
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
{your SIF certificate}
-----END CERTIFICATE-----

Node.js環境に証明書を提供する

証明書をNode.js環境に含めるには、Node.jsの既知のルート証明書に証明書を追加する必要があります。

大事な

.envファイルに追加してdotenvライブラリを使用すると、この方法で定義された環境変数の読み込みが遅すぎてNode.js認識できないため、機能しません。

証明書を提供するには、いくつかのオプションがあり、すべて次のNODE_EXTRA_CA_CERTSを使用します。

  • ローカル環境またはシステム環境で、次のコマンドを実行します。

    setx NODE_EXTRA_CA_CERTS <file>

    システム全体の証明書を設定するには、オプションの /mパラメータを使用します。

    ターミナルまたはコードエディタを再起動して、変更を有効にします。

  • PowerShellセッションで、次のスクリプトを実行します。

    $env:NODE_EXTRA_CA_CERTS="<file>"

    新しいセッションを開始するときに、この手順を繰り返す必要があります。

  • JSSアプリケーションのpackage.jsonファイルで、スクリプトstart:connectedを変更します。

    "start:connected": "cross-env-shell NODE_EXTRA_CA_CERTS=<file> ..."
この記事を改善するための提案がある場合は、 お知らせください!