vsftpdを使用してFTPサーバーを構築し、macのFileZillaを使ってFTP接続をしています。

 

vsftpdはLet's Encryptを利用してFTP over TLSで通信を暗号化しています。

 

これまで問題なく動作していましたが、Let's Encryptの証明書が更新されるたびに、FileZillaで「不明な証明書」のメッセージが表示されていました。この状況について調査したところ、FileZillaでは、ルート証明書から辿れる証明書であっても、その証明書を信頼しない限り「不明な証明書」のメッセージが表示されることがあることが分かりました。

 

 

このような場合、証明書が正当であるかどうかを判断する方法は、証明書のフィンガープリント(指紋)を確認することです。

ルート証明から辿れる証明書でも正しい証明書か判断するのにフィンガープリントで確認するしかなく、自己証明書でもルート証明から辿れる証明書でも証明書を確認する方法はどちらも同じです。

そのため、FTPクライアントとしてfilezillaだけを使用するのであれば、ルート証明から辿れる証明書を使っても、自己証明書を使っても変わりませんね。

 

しかし、そうであってもFTP接続を実行する際に、単に盲目的に接続を許可するのではなく、不明な証明書のメッセージが表示された場合、証明書のフィンガープリントの値を確認すべきです。

 

FTPサーバーへのSSHログインが可能な場合、SSHを使用してサーバーにアクセスし、OpenSSLコマンドを使用して証明書のフィンガープリントを表示します。

その後、FileZillaで「不明な証明書」のメッセージが表示された場合、その証明書のフィンガープリントと、SSH経由で表示したフィンガープリントを照合します。フィンガープリントが一致する場合、FTPサーバーはなりすまされていないことが確認できるため、その証明書を信頼するようにチェックを入れて接続を行います。

一度証明書を信頼すれば、そのサーバーでは証明書が更新されるか、有効期限が切れるまで「不明な証明書」のメッセージは表示されなくなります。

 

証明書のフィンガープリントの確認は、以下のコマンドを使用して行います。なお、証明書はドメインをmydomain.comと仮定しLet's Encryptのファイルの配置として記載しています。証明書の場所に合わせて指定してください。

SHA-256のフィンガープリントを表示する場合のコマンド:

openssl x509 -text -fingerprint -sha256 -noout -in /etc/letsencrypt/live/mydomain.com/cert.pem

 

FileZillaの不明な証明書のメッセージにはSHA-1のフィンガープリントも表示されますが、SHA-1には脆弱性があるため、SHA-256で確認することをお勧めします。

 

 

FTPサーバのサーバ証明書とHTTPSサーバのサーバ証明書で同じ証明書を使っている場合に

別の方法もありましたので、以下追記です。(追記はChatGTPにより作成しました。)

 

また、Let's Encryptの証明書をFTPサーバーと同じサーバーでHTTPSサーバーにも使用している場合、

HTTPS経由でサイトにアクセスすることで、証明書のフィンガープリントを簡単に確認できます。

これにより、FTPサーバーの証明書を信頼するためのフィンガープリントを取得する手間を省くことができます。

 

以下は確認手順です:

  1. ブラウザを開く: お使いのブラウザを開いて、HTTPSでアクセスしたいドメイン(例:ホスト名がmydomain.comならhttps://mydomain.comにアクセスします。

     

  2. 証明書詳細を表示: ブラウザのアドレスバーにあるロックアイコン(一般的には緑色の場合が多い)をクリックします。これにより、証明書の詳細を表示するオプションが表示されます。

     

  3. 証明書詳細ページを開く: 証明書詳細を表示するオプションをクリックします。これにより、証明書の詳細情報が表示される新しいウィンドウまたはダイアログボックスが開きます。

     

  4. 証明書フィンガープリントの確認: 証明書詳細ページには、証明書のフィンガープリントが表示されます。通常、SHA-256ハッシュアルゴリズムを使用したフィンガープリントが表示されます。これがFTPクライアント(FileZillaなど)で証明書を確認する際に使用するフィンガープリントです。

     

  5. FTPクライアントでフィンガープリントを照合: FileZillaなどのFTPクライアントで、FTPサーバーに接続する際に表示される「不明な証明書」のメッセージに表示されているSHA-256フィンガープリントと、HTTPS経由で確認した証明書のSHA-256フィンガープリントを照合します。フィンガープリントが一致する場合、FTPサーバーの証明書を信頼するように設定できます。

HTTPSサーバーの証明書は通常、Webブラウザから簡単にアクセスできるため、

FTPサーバーの証明書を信頼するためのフィンガープリントを取得する手段として便利です。

セキュリティを確保するために、FTPサーバーの証明書を信頼する際には、

必ずフィンガープリントを確認して一致することを確認してください。