1.FTPSとは?
【FTPS】とは【File Tranfer Protocol over SSL/TLS】の略で
ファイル転送の約束事を【SSL/TLS】を利用してやりましょう、みたいなことです。
【SSL/TLS】は何かというと
【共通鍵暗号方式】と【公開鍵暗号方式】の両方を用いてデータを暗号化する技術になります。
今回はこれを設定し動作確認を行ってみます。
2.OpenSSLをインストール
SSL/TLSの暗号化通信には【SSLサーバー証明書】が必要になります。
これを作成するために【OpenSSL】が必要になるのでインストールします。
【OpenSSL:The Open Source toolkit for SSL/TLS】
インストールします。
[root@localhost ~]# yum -y install openssl
バージョンを確認します。
[root@localhost ~]# openssl version OpenSSL 1.0.2k-fips 26 Jan 2017
3.【秘密鍵】と【サーバ証明書(CRT)】を作成する
opensslコマンドが使えるようになったので
早速【秘密鍵】と【サーバ証明書(CRT)】を作成します。
通常の流れだと
①秘密鍵の作成
②署名要求(CSR)の作成
③SSL証明書会社によるサーバー証明書(CRT)の作成
という手順になると思いますが
今回は自己署名になりますので
下記コマンドにて秘密鍵作成、CSR作成、自己署名を同時に行います。
更に【秘密鍵】と【サーバ証明書(CRT)】を【vsftpd.pem】という一つのファイルにまとめます。
[root@localhost ~]# cd /etc/pki/tls/certs [root@localhost certs]# openssl req -x509 -nodes -newkey rsa:2048 -days 3650 -keyout vsftpd.pem -out vsftpd.pem Generating a 2048 bit RSA private key .+++ ..............................................................................................+++ writing new private key to 'vsftpd.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:JP State or Province Name (full name) :Tokyo Locality Name (eg, city) [Default City]:Minato-ku Organization Name (eg, company) [Default Company Ltd]:会社名など Organizational Unit Name (eg, section) :部署名など Common Name (eg, your name or your server's hostname) :www.hogehoge.co.jp Email Address :
コマンドオプションの詳細は下記のとおりかと思います。
req:証明書の署名要求(CSR)の作成
-x509:X.509形式の署名要求ファイルを作成する
-nodes:鍵ファイルは暗号化しない
-newkey rsa:2048:RSA2048の秘密鍵を作成
-days 3650:X.509形式の証明書の有効期限を3650日とする
-keyout filename:出力する秘密鍵のファイル名
-out filename:出力する【サーバ証明書(CRT)】のファイル名
4.【vsftpd】の設定(FTP)
本設定については下記記事を参照して下さい。
パッシブモードでの【FTP】の設定になります。
www.chuken-engineer.com
5.【FTPS】の設定をする
4項で設定した内容に下記を追加し【FTPS】の設定を行います。
設定ファイルの場所は【/etc/vsftpd/vsftpd.conf】になります。
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
①SSL機能の有効
ssl_enable=YES
②SSLプロトコルの設定
ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO
③SSL接続を強制的に行う(SSL接続以外の接続は出来ない)
force_local_data_ssl=YES force_local_logins_ssl=YES
④サーバー証明書の指定
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
設定が完了したら【vsftpd】を再起動します。
[root@localhost ~]# systemctl restart vsftpd
6.確認する
【FFFTP】で確認してみます。
【FTPS】で接続するために【設定変更】をクリックします。
【暗号化】タブをクリックし下図の設定に変更し【OK】をクリックします。
【接続】をクリックすると下図のとおり【証明書の確認】が表示されるので
【OK】をクリックします。
下図のとおりタイトルバーに【暗号化されています】
の表示が出たらFTPSで接続されていることになります。