npmのCERT_HAS_EXPIRED対処法

冒頭まとめ npm installなどで次のエラーが出る場合、npmがHTTPS通信で検証した証明書の有効期限が切れています。 npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED 最初に接続先URLとnpmレジストリを確認してください。公式レジストリではなく、社内レジストリ、ミラー、プロキシを経由している場合は、その途中で提示された証明書が原因になることもあります。 次にnpmのcaとcafile、Node.jsのバージョンを確認します。古いCA証明書が明示的に設定されている場合は設定を更新し、Node.jsが古い場合はサポート中の版へ更新します。証明書の検証を無効にするstrict-ssl=falseは、安全な解決方法ではありません。 CERT_HAS_EXPIREDの意味 CERT_HAS_EXPIREDは、Node.jsのTLS処理が返すX.509証明書エラーです。Node.js公式文書では「証明書の有効期限が切れている」状態として定義されています。 npmはパッケージやメタデータをHTTPSで取得するとき、接続先から提示された証明書をNode.jsで検証します。証明書チェーンの検証対象に期限切れの証明書が含まれていると、npmは通信を中止し、このコードを表示します。 エラーはパッケージの依存関係やpackage-lock.jsonの内容そのものを示すものではありません。DNS解決とTCP接続の後に行われるTLS証明書の検証で失敗しています。Node.js公式のTLSエラーコード一覧で定義を確認できます。 最初に接続先と設定を確認する エラーの前後に表示されたURLを確認します。npmが使用する既定レジストリも調べてください。 npm config get registry https://registry.npmjs.org/以外が表示された場合は、社内レジストリやミラーの証明書を確認します。ただし、レジストリが公式URLでも、HTTPSプロキシが通信を中継していれば、実際に検証している証明書はプロキシが発行したものかもしれません。 続いて、Node.jsのバージョンとnpmの証明書設定を確認します。 node -v npm config get ca npm config get cafile npm config get strict-ssl caまたはcafileに値がある場合は、その設定が意図したものか、参照先の証明書が現在も有効かを確認します。strict-sslの既定値はtrueです。 環境変数も確認します。macOSやLinuxでは次を実行します。 printf '%s\n' "$NODE_EXTRA_CA_CERTS" PowerShellでは次のように確認できます。 $env:NODE_EXTRA_CA_CERTS 接続先やプロキシの証明書が期限切れの場合 社内レジストリ、キャッシュ用ミラー、HTTPSプロキシなどの証明書が期限切れなら、サーバーまたはプロキシ側で証明書を更新する必要があります。利用者側でnpmの検証を無効にしても、期限切れそのものは解消しません。 OpenSSLを利用できる環境では、実際の接続先ホストを指定して証明書の有効期間を確認できます。 openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null \ | openssl x509 -noout -subject -issuer -dates notAfterが有効期限です。ただし、プロキシを経由する環境でこのコマンドがnpmと同じ通信経路を通るとは限りません。ブラウザ、プロキシ管理画面、組織の証明書管理手段も併用し、npmが実際に受け取った証明書を確認してください。 公開レジストリ側の障害が疑われる場合は、npmのサービス稼働状況も確認します。社内レジストリやプロキシの場合は、管理者へ接続先URL、発生時刻、証明書の発行者と有効期限を伝えると調査しやすくなります。 npmのcaまたはcafileが古い場合 npmのcaは、レジストリとのSSL接続で信頼するCA証明書を直接指定する設定です。cafileは、1つ以上のCA証明書を含むファイルのパスを指定します。どちらも既定値はnullです。npm公式のconfig文書に仕様があります。 過去に社内CAや古い証明書を登録し、その設定だけが残っていると、現在の正しい証明書チェーンを検証できないことがあります。設定が不要になったことを確認できた場合は削除します。 npm config delete ca npm config delete cafile 削除後に値を確認し、もう一度インストールします。 ...

2026年9月21日 · ErrorLog