---
title: "ウォークスルー:Node.js用のSitecore CA証明書の設定方法"
slug: "walkthrough--configuring-sitecore-ca-certificates-for-node-js"
abstract: "プライベート署名されたSSL証明書によるNode.jsエラーの回避・修正"
---
# ウォークスルー:Node.js用のSitecore CA証明書の設定方法

ローカル環境では、Sitecoreインスタンスはプライベート署名済みの証明書を使ってインストールされます。しかし、ルートCAが不明であるため、Node.jsによって拒否されます。7.3.0 Node.js以降は、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コンテナインスタンスで使用されている証明書ファイルを特定してください

DockerベースのSitecoreコンテナでは、証明書ファイルはプロジェクト設定時にmkcertによって作成されました。

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

mkcert -CAROOT

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

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

Sitecoreインストールフレームワーク(SIF)でインストールされたSitecoreインスタンスの場合、Windows証明書ストアから証明書をエクスポートする必要があります。

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

1.  コマンドラインからcertlmまたは「Manage Computer Certificates」を検索してローカルコンピュータのWindows証明書マネージャーを開きます。
2.  「**Trusted Root Certification > Certificates」の「Trusted Root Certification**」「 **Installation Framework** 」証明書Sitecoreを右クリックし、「All Tasks」をクリックし、「エクスポート」を選びます。
3.  新しいウィンドウで「次へ」をクリックしてください。
4.  **エクスポートファイルフォーマット**画面で、**Base-64でエンコードされたX.509(.CER)**を選び、「次へ」をクリックします。
5.  例えば、ファイル名、*SIFRoot.cer* 、.cerファイルを保存する場所を入力します。「次へ」をクリックし、「終了」をクリックします。

> !注Sitecoreコンテナとオンプレミスインスタンスの両方を持っている場合、証明書を1つのファイルにまとめることができます。例えば:
> 
> \-----BEGIN CERTIFICATE-----{YOUR MKCERT CERTIFICATE}-----END CERTIFICATE-----
> 
> \-----証明書開始-----{あなたのSIF証明書}-----証明書終了-----

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

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

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

証明書を提供するには、以下の[NODE\_EXTRA\_CA\_CERTS](https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file)を使った複数の選択肢があります:

-   ローカルまたはシステム環境で以下のコマンドを実行します:
    
    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> ..."