🔓
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
.crt
にリネームして CA ストアへ配置
3. PEM を
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 追加は成功です。
apt-get update
!
5. いざ sudo apt-get update
エラーが消えればミッション完了 🎉
Discussion