DEV Community

tackme
tackme

Posted on • Edited on

JSSのIntegrated ModeでConnected GraphQLを使用すると証明書エラーが発生する

JSSでウェブサイトを作成していた際にGraphQLで詰まったので備忘録として残しておきます。

Integrated GraphQLだと動的にパラメータを変更するような処理が組めないので、そういう場合はConnected GraphQLを使うことになります。

しかし、Connected GrapQLを使用したコードをSitecoreへデプロイしてIntegrated Modeで動作させると以下のようなエラーが発生します。

unable to verify the first certificate 
Enter fullscreen mode Exit fullscreen mode

これはnode.jsはWindowsの証明書ストアを参照しないため、SSRの実行時にAPIへのリクエストで証明書の検証に失敗することが原因です。

対応方法

まずはウェブサイトの中間(ルート)証明書をブラウザから取得します。

証明書の形式は Base 64 encoded X.509 (.CER) を選択してください。

次にその証明書を適当なフォルダに配置します。

最後にSitecore.configへ以下のパッチを適用します。JSSで使用するNode.jsのプロセスに環境変数 NODE_EXTRA_CA_CERTS を割り当てています(システム環境変数に直接設定してもOKです)。

<configuration xmlns:role="http://www.sitecore.net/xmlconfig/role/"> <sitecore role:require="ContentManagement or ContentDelivery or Standalone"> <javaScriptServices> <renderEngines> <renderEngine name="nodejs"> <instance id="defaults"> <!-- 証明書のパスを指定 --> <EnvironmentVariables> <var name="NODE_EXTRA_CA_CERTS" value="C:\path\to\certificate.cer" /> </EnvironmentVariables> </instance> </renderEngine> </renderEngines> </javaScriptServices> </sitecore> </configuration> 
Enter fullscreen mode Exit fullscreen mode

node.jsでは環境変数のNODE_EXTRA_CA_CERTSに証明書ファイルへのパスを設定しておくことで、node.jsがその証明書を参照するようになります。

これでエラーが発生せずにConnected GrapQLを使用できるようになります。

参考

Top comments (0)