本文へスキップ
ecdsa.com
pnpm 12 (native binary, rustls)パッケージマネージャー

エラーメッセージ

Error: ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR

別の表記

  • Error: ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST

最初の行に表示されるコードはコマンドによって異なり、pnpm install では ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR、pnpm add では ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST です。その下の原因の連鎖は「Failed to fetch metadata from <url>: error sending request: client error (Connect): invalid peer certificate: UnknownIssuer」となり、80 桁で折り返されます。pnpm 10 以前は Node.js 上で動作し、代わりに SELF_SIGNED_CERT_IN_CHAIN や UNABLE_TO_GET_ISSUER_CERT_LOCALLY などの Node.js のコードを報告します。

pnpm 12 (native binary, rustls) — registry request over HTTPS fails with "invalid peer certificate: UnknownIssuer"

このエラーの意味

pnpm 12 はレジストリからパッケージのメタデータを取得できませんでした。出力される原因の連鎖は「invalid peer certificate: UnknownIssuer」で終わっており、TLS の検証に失敗したことを示しています。pnpm 12 はネイティブバイナリで、その HTTP クライアントは rustls で証明書を検証します。「UnknownIssuer」は、チェーンの構築に失敗したあらゆる場合に rustls が返す唯一のコードで、未知のプライベート CA、プロキシのルート、中間証明書の欠落、自己署名証明書のどれが原因でもこのコードになります。

発生する理由

修正方法

  1. 1.

    .npmrc に cafile を設定する

    pnpm は npm 形式の設定ファイルを読み込みます。cafile(またはインラインの ca の値)を指定すると、レジストリへのリクエストで信頼する CA が追加されます。

    ini
    ; .npmrc (project or ~/.npmrc) — read by pnpm as well as npm
    cafile=/etc/ssl/private-ca/corp-root-ca.pem
  2. 2.

    ルートをオペレーティングシステムのストアにインストールする

    ecdsa.com のテストでは、pnpm 12 は update-ca-certificates で追加したルート証明書を受け入れました。そのため、IT 部門が配布したルートは、追加の設定なしで機能します。

    bash
    # pnpm 12 also trusts the operating system's store
    sudo cp corp-root-ca.pem /usr/local/share/ca-certificates/corp-root-ca.crt
    sudo update-ca-certificates
  3. 3.

    または NODE_EXTRA_CA_CERTS を使う

    pnpm 12 もこの変数に従うため、Node.js、npm、pnpm で 1 つの設定を共通して使えます。

    bash
    # Honoured by pnpm 12 too, so one variable covers node, npm and pnpm
    export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-root-ca.pem
    pnpm install

関連するエラー

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