🔓

apt-get で "Certificate verification failed" を解決する(Ubuntu 24.04)

に公開

apt-get で "Certificate verification failed" を解決する(Ubuntu 24.04)

はじめに

企業ネットワークのセキュリティ装置が TLS 通信を復号(いわゆる SSL/TLS インスペクション)すると、Ubuntu 側では 自己署名 のルート CA が突然差し込まれます。標準 CA ストアにその証明書が無い場合、apt-get は次のように失敗します。

Err:1 https://ftp.udx.icscoe.jp/Linux/ubuntu noble InRelease
  Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown.  Could not handshake: Error in the certificate verification. [IP: 219.100.92.228 443]
W: Failed to fetch https://ftp.udx.icscoe.jp/Linux/ubuntu/dists/noble/InRelease  Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown.

ネットワーク構成イメージ

この記事では、DER 形式の自己署名ルート CA を PEM に変換し、.crt 拡張子でシステム CA ストアに登録して apt-get update を正常に通すまでの実際の手順を紹介します。


手順

以下ではファイル名を例として self-company-ca.crt を使用します。

1. ファイル形式を判定(PEM か DER か)

file self-company-ca.crt

data / DER encoded x509 certificate と判定されたら DER 形式 です。

2. DER → PEM へ変換

openssl x509 -inform DER -in self-company-ca.crt -out self-company-ca.pem

self-company-ca.pem の先頭が -----BEGIN CERTIFICATE----- になっていることを確認します。

head -n 3 self-company-ca.pem

3. PEM を .crt にリネームして CA ストアへ配置

update-ca-certificates.crt 拡張子のみを対象にします。

sudo cp self-company-ca.pem /usr/local/share/ca-certificates/self-company-ca.crt
sudo update-ca-certificates --fresh   # バンドルを再生成

XX added, 0 removed と表示されれば新しい CA が反映されています。

4. OpenSSL でハンドシェイクをテスト(任意だが推奨)

echo | openssl s_client -connect ftp.udx.icscoe.jp:443 \
      -servername ftp.udx.icscoe.jp \
      -CAfile /usr/local/share/ca-certificates/self-company-ca.crt \
      -verify_return_error

Verify return code: 0 (ok) が出れば CA 追加は成功です。

5. いざ apt-get update

sudo apt-get update

エラーが消えればミッション完了 🎉

Discussion