yarn add 時の YN0001: RequestError: self-signed certificate in certificate chain エラーに対応する
TLS インスペクション環境で yarn add
時に発生する YN0001: RequestError: self-signed certificate in certificate chain
エラーの対応方法を紹介します。
やりたいこと
企業の環境等で TLS インスペクションが入っている環境において yarn add
でパッケージを追加する際に YN0001: RequestError: self-signed certificate in certificate chain
というエラーが発生することがあります。
このエラーは TLS インスペクションが入っていることにより証明書検証でエラーとなっていることがほとんどです。 TLS インスペクションの簡単な説明と、後ほど使用する証明書の特定、取得方法を こちらの記事 で紹介していますので必要であればご参照ください。
本記事ではこのエラーの対応方法を紹介します。
環境
- OS
- Microsoft Windows 22H2
- Node.js
- v22.12.0
- yarn
- v4.5.3
対応方法
証明書検証をオフにする (非推奨)
yarn の設定ファイル .yarnrc.yml
で enableStrictSsl
オプションを false
を設定することで証明書検証をオフにすることができます。ただしあらゆる HTTPS における証明書検証がなされなくなるので、この方法はおすすめしません。
enableStrictSsl: true,
Define whether SSL errors should fail requests or not.
If false, SSL certificate errors will be ignored
- Settings (.yarnrc.yml) | Yarn
一応設定方法について書いておきます。
で設定できます。
とコンソールに表示され、プロジェクトルートの .yarnrc.yml
に enableStrictSsl: false
が追加されます。
この状態で yarn add
でパッケージを追加するとエラーが出なくなっていると思います。
上述した通りセキュリティ的によろしくないので、試した場合は enableStrictSsl
オプションを true
に戻しておきましょう。
とコンソールに表示され、プロジェクトルートの .yarnrc.yml
に enableStrictSsl
オプションが無くなっていることを確認しましょう。
自己署名証明書を指定する
本質的にはプロキシの自己署名証明書を追加することがあるべき姿です。yarn の設定ファイル .yarnrc.yml
で httpsCaFilePath
オプションにファイルパスを設定することで追加のルート証明書を指定することができます。
繰り返しになりますが、追加する証明書の特定、取得方法を こちらの記事 で紹介していますので必要であればご参照ください。
httpsCaFilePath: “./exampleCA.pem”,
Path to a file containing one or multiple Certificate Authority signing certificates.
- Settings (.yarnrc.yml) | Yarn
プロジェクトルートからの相対パスで指定可能ですが、絶対パスの方がよいでしょう。またプロジェクトの .yarnrc.yml
に設定するとリポジトリ管理している場合他の開発者にも影響を与えてしまうのと、同一端末・ネットワーク環境で作業する場合、他のプロジェクトにもこの設定が必要になるのでユーザーグローバルな .yarnrc.yml
に設定するのがよいです。ユーザーグローバルな .yarnrc.yml
に設定するには -H
オプションを付けます。
以下コマンドで設定できます。
-H
,--home
Update the home configuration instead of the project configuration
- yarn config set | Yarn
とコンソールに表示されるので、念のため以下コマンドで設定されていることを確認しましょう。
以下のようにユーザーグローバルの .yarnrc.yml
に設定されていれば OK です。
あとがき
TLS インスペクション環境化において yarn add
でパッケージを追加する際に発生する YN0001: RequestError: self-signed certificate in certificate chain
エラーの対応方法を紹介しました。本編と関係ありませんが yarn のユーザーグローバルを指すオプションが -g
とかじゃなくて -H
, --home
なのが実態とあっていて個人的には好みです。