状況の説明
OpenSSLで作成した証明書が、証明書の検証でエラーになる。
-
AWSで (EC2) は、ACMの証明書をロードバランサに登録してhttpsに使用している。
-
上記のEC2インスタンスでFTPSを設定 (こっちは OpenSSL で自己署名証明書を利用している)しているときにこのエラーが発生。
-
WSLからlftpというFTPクライアントツールを使用してパッシブモードで接続。FTPの宛先のグローバルIPアドレスの指定や、ポートの解放 (クライアント側のufw、サーバー側の Firewalld、EC2のセキュリティグループのインバウンドルール)は既におこなっている。
-
FTPSの暗号化は、Expicitモードを使用 (コントロールコネクションに使用するポート番号は 21)。
環境
ローカルOS: WSL (Ubuntu-24.04
)
リモートOS: Amazon Linux 2023
# WindowsのPowerShellでUbuntu (WSL)にログイン
wsl -d Ubuntu-24.04
仮説
ACMの証明書と、OpenSSLの証明書が干渉している
根拠
Googleで "the certificate issuer is unknown"という検索キーワードで以下のSalesForceの製品トラブルシューティングが出てきます。
Cause
証明書信頼リスト (CTL) と認証機関 (CA) の証明書のダウンロードが競合により妨げられています。そのため、Windows では licensing.tableau.com の SSL 証明書が有効で信頼できる証明書であることを確認できません。
クライアント側で証明書 (今回は自己署名CAが発行したもの)のダウンロードが競合している、ということかもしれません。エラーメッセージの "The certificate issuer" といっているのは、この自己署名CAである可能性が高いです。
参考
応急処置的な対応
lftpの設定ファイルで、以下のようにssl:verify-certificate
の値をfalse
(証明書を検証しない)にすればとりあえずエラーは出なくなります。これによって、(おそらくFTPのコントロールコネクションの前におこなわれている、)FTPSに使用する SSL証明書を検証をスキップできます。
set ssl:verify-certificate false # 自己署名証明書 (個人的な利用に限る)のため、検証をしない
ただし、自己署名証明書やサーバー証明書を検証しなくなります。自己署名証明書の場合はこの対応でとりあえずはOKということにします。