本文へスキップ
ecdsa.com
Yarn Classic (1.x)パッケージマネージャー

エラーメッセージ

error Error: self-signed certificate in certificate chain

別の表記

  • error Error: self signed certificate in certificate chain

Yarn 1.x は「error Error: …」と出力し、続けて Node.js のスタックトレース(at TLSSocket.onConnectSecure …)を表示します。Node.js 16 以前では「self signed」と表記されます。Yarn 4 は TLS の失敗を独自の形式「➤ YN0001: RequestError: <reason>」で報告します。

Yarn Classic (1.x) — registry request over HTTPS

このエラーの意味

チェーンが Node.js の信頼しない自己署名のルートで終わっているため、Yarn Classic はレジストリの証明書を検証できませんでした。Yarn は Node.js のエラーをそのまま出力し、その下にスタックトレースを表示します。社内ネットワークでは、これは TLS を検査するプロキシの典型的な症状です。そのプロキシのルートはブラウザーには信頼されていても、Node.js には信頼されていません。

発生する理由

修正方法

  1. 1.

    Yarn 1 の cafile を設定する

    yarn config set cafile を実行すると、Yarn はその PEM ファイルを基準にレジストリを検証します。npm の設定と同じく、レジストリへのリクエストではデフォルトのルートが置き換えられます。

    bash
    # Yarn 1.x setting (stored in ~/.yarnrc)
    yarn config set cafile /etc/ssl/private-ca/corp-proxy-root.pem
    yarn config get cafile
  2. 2.

    または NODE_EXTRA_CA_CERTS を使う

    Yarn を含め、その環境のすべての Node.js ツールについて、Node.js の組み込みリストにルートを追加します。

    bash
    export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-proxy-root.pem
    yarn install
  3. 3.

    Yarn 4:httpsCaFilePath

    現行の Yarn は .yarnrc.yml から httpsCaFilePath を読み込みます。Yarn 4 は、従来の caFilePath キーを見つけると起動を拒否します。

    yaml
    # Yarn 4 (Berry): .yarnrc.yml — Yarn 4 rejects the old caFilePath key
    httpsCaFilePath: /etc/ssl/private-ca/corp-proxy-root.pem
  4. 4.

    一時的な診断:strict-ssl false

    問題が信頼だけであることを確認できます。パッケージはインストールスクリプトを実行するため、検証を無効にしたままにすると、すり替えられたパッケージを招き入れることになります。テストが終わったらすぐに設定を削除してください。

    bash
    # Temporary diagnostic only; revert immediately afterwards
    yarn config set strict-ssl false && yarn install; yarn config delete strict-ssl

関連するエラー

署名エラーデータベースをすべて見る