oneaws コマンド実行時に SSL 証明書検証エラーが発生し、AWS STS への接続が失敗。
code:markdown
問題と解決のまとめ
発生した問題
SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get certificate CRL)
oneaws コマンド実行時に SSL 証明書検証エラーが発生し、AWS STS への接続が失敗。
---
根本原因
OpenSSL library 3.6.0 の挙動変更 × OpenSSL gem の未対応
1. OpenSSL 3.6.0 (2025年10月リリース) が Homebrew 経由でインストールされた
2. このバージョンで V_FLAG_CRL_CHECK_ALL フラグの挙動が変更:
- 旧版: このフラグ単独では効果なし
- 3.6.0: このフラグが V_FLAG_CRL_CHECK を暗黙的に含む(厳格な CRL チェックが有効化)
3. OpenSSL gem 3.0.1 (Ruby 3.1.3 同梱) がデフォルトで V_FLAG_CRL_CHECK_ALL を設定していた
4. 結果として、意図せず全証明書で厳格な CRL チェックが有効化され、CRL 取得失敗がエラーになった
---
解決方法
gem install openssl
OpenSSL gem を 3.0.1 → 3.3.1 にアップデート
- これにより OpenSSL 3.6.0 の挙動変更に対応
---
技術的詳細
| 項目 | gem 3.0.1 (旧版) | gem 3.3.1 (新版) |
|----------------------|----------------|----------------|
| OpenSSL library | 3.6.0 | 3.6.0 (同じ) |
| V_FLAG_CRL_CHECK_ALL | デフォルトで設定 | 削除済み |
| CRL チェック | 厳格(失敗=エラー) | 緩和(失敗=無視) |
| 接続結果 | 失敗 | 成功 |
---
試したが効果がなかった方法
- ❌ SSL_CERT_FILE 環境変数の設定
- ❌ Ruby の再インストール(OpenSSL 指定付き)
- ❌ AWS SDK 環境変数での SSL 検証無効化
- ❌ ca-certificates の更新
→ これらは OpenSSL gem 側の問題だったため効果なし
---
教訓
- SSL エラーが発生したら、まず gem のアップデートを試す
- OpenSSL gem と OpenSSL library は別物
- システムライブラリの更新により、Ruby gem が影響を受けることがある