テクノロジー · 実用ガイド
curl エラー77?証明書を置き換える前に失敗した CA ファイル/ディレクトリを特定
エラー77は、curl が選択された CA 証明書の場所を読み込めないことを示します。バイナリ、TLS バックエンド、上書き設定、実効パスを特定し、経路の通過権、バイト、ストア構造を確認してから一つの入力だけを修復し、insecure なしで再試験します。

curl エラー77はローカル信頼ストアの読み込み失敗であり、リモートサーバー証明書が悪い証拠ではありません。curl の公式リファレンスは SSL CA 証明書の場所を読めない問題に限定しています。
最初に --insecure、chmod 777、任意のバンドル取得を行わないでください。実行された curl と TLS バックエンド、選ばれたファイルまたはディレクトリ、読み込めない理由を先に証明します。
1. 失敗した実行環境を正確に保存する
実行ファイルのパス、curl のバージョンと TLS バックエンド、秘密を除いたコマンド、終了コード、作業ディレクトリ、ユーザー/サービス ID、コンテナイメージ、ラッパーを記録します。シェルの curl、PHP 拡張、Python バインディング、組み込み libcurl は別のビルドと設定を使う場合があります。
完全なエラー行と詳細起動出力を保存し、認証情報は除去します。Authorization、Cookie、署名付きクエリ、クライアント鍵、内部ホスト名を公開しないでください。失敗プロセスが示した CAfile と CApath は証拠です。
2. オプションと環境変数の優先順位を解く
明示的な --cacert/--capath、アプリ設定、CURL_CA_BUNDLE、SSL_CERT_FILE、SSL_CERT_DIR を列挙し、実際のビルド既定値と比較します。同じサービス、コンテナ、CI ステップ内で調べます。対話シェルは環境が異なる場合があります。
まだ変更しません。選択入力とその出所を、コマンドオプション、ラッパー設定、環境変数、ネイティブストア、コンパイル既定値として表にします。衝突があれば意図しない上書きだけを除き、一回の制御試験を行います。
3. パス通過とファイル同一性を証明する
失敗ユーザーとして各ディレクトリ要素と最終オブジェクトを検査します。ファイルが読めても、親を通過できない、シンボリックリンクがサンドボックス外を指す、バインドマウントがない、ポリシーが拒否する場合は失敗します。解決後パス、所有者、モード、サイズ、ダイジェスト、境界を記録します。
chmod 777 を診断の近道にしないでください。権限を過剰に広げても、欠落マウント、空ファイル、誤形式、壊れた PEM、サンドボックス拒否は直りません。境界を特定したら最小権限に戻します。
4. CAfile または CApath の構造を検証する
CAfile では、ディレクトリ、PKCS#12、ゼロバイト、証明書に見せかけた HTML を排除します。OpenSSL は PEM 証明書ブロックを要求し、検証場所を読み込むときにファイルを処理します。システム管理バンドルを置き換える前にコピーを解析します。
OpenSSL の CApath では証明書ファイルにハッシュ検索用レイアウトが必要です。対象ディレクトリに適切な rehash を実行し、生成されたリンクを確認します。PEM が並ぶだけのディレクトリは必要時に証明書を提供できないことがあります。
5. 一層だけを修復し、安全な試験で閉じる
古い上書きの削除、パッケージ管理バンドルの復元、マウントパス修正、信頼できる配布元からの空ファイル置換、PEM 修正、ハッシュディレクトリ再構築のうち、狭い原因だけを直します。破損やイメージ構築を調べるなら旧ファイルとログを保存します。
同じ実行環境と宛先で --insecure なしに再試験します。終了コード0、TLS 検証成功、意図した CA ソース、予期しないバンドルへのフォールバックなしを要求します。その後、実際のラッパー/サービスも試験し、修正パス、所有者、バイト数、ダイジェスト、設定元を記録します。
