もともとSFTPを使えるようにしていたが、せっかくSSL証明書を入れたのでFTPSの構築に
挑戦してみた。SFTPとFTPSは似ているが、前者はSSHを使用したファイル転送機能、
後者は通常のFTPを暗号化(HTTPに対してHTTPSに相当)したものと、全然違います。
まあ、SFTPしか使わないと思うけど。
ググってやってみたけど、どうしてもうまくいかずにはまった点をメモしておきます。
SSLとvsftpdはインストール済みで、通常のFTPまではOKの環境を前提とします。
1. # vi /etc/vsftpd/vsftpd.conf で、ファイルの最後に以下を足す。
ssl_enable=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem ←ここが今回はまったところ
force_local_logins_ssl=YES
force_local_data_ssl=YES
allow_anon_ssl=NO
2. /etc/pki/tls/certs/vsftpd.pem を作る
デフォルトではftps用の証明書がないので、作ります。
作るといっても、すでにSSL証明書が入っているはずなので、
「秘密鍵」と「証明書」をテキスト的に結合して1ファイルにするだけです。
私の場合は以下のようにしました。
# cd /etc/pki/tls/certs/
# (cat server.key ; cat startssl.crt) > vsftpd.pem
ミソは、「秘密鍵」→「証明書」の順で足し合わせること。
はじめは逆にやっていてどうしてもエラーが治まりませんでしたが、
逆にしたところうまくいきました。
というか、はじめはどのファイルとどのファイルを結合すればいいかも
わからなかったです。さらに順番もあるとは・・・。
どれが「秘密鍵」で、どれが「証明書」かは、/etc/httpd/conf.d/ssl.conf を見て確認します。
SSLCertificateKeyFile /etc/pki/tls/certs/server.key ←秘密鍵
SSLCertificateFile /etc/pki/tls/certs/startssl.crt ←証明書
3. vsftpdを再起動する
# service vsftpd restart
これでFFFTPをつかって、FTPS接続できました。
iptablesではFTPポートと、PASVポートを開けただけで大丈夫でした。(FTPSポートは開けていない)