LoginSignup
0
0

ラズパイとWindowsでリンクローカルアドレスFTP(2)SSL有り

Last updated at Posted at 2023-11-25

この記事について

図のようにリンクローカルアドレス内で ラズパイ <-> WindowsPC等でのFTP通信するための環境を検証した前回からの続きです。

SSL有りの場合について記事を書きます。

環境

FTPクライアント

  • Raspberry Pi 4 Model B Rev 1.2 / Raspberry Pi OS Lite 64-bit (Debian GNU/Linux 11 (bullseye))
  • static ip : 192.168.1.100
  • local-link static ip : 169.254.100.101

FTPサーバー

  • DesktopPC (Windows11 Pro 23H2)

FTPクライアント構築

ラズパイにlftpクライアントとiptables-persistentをインストールします。
証明書の認証手続きをするためにftpではなくlftpを使います。

パッケージインストール

#アップデート
sudo apt update  
sudo apt -y upgrade  

#python関連インストール
sudo apt install -y python3-dev python3-pip  

#lftpとiptablesインストール
sudo apt install -y lftp iptables iptables-persistent

sudo apt update  
sudo reboot

filer設定

「ラズパイとWindowsでリンクローカルアドレスFTP(1)SSL無し」のfilter設定と同じです。

FTPサーバー構築

WindowsPCにFTPサーバーを立てます。

FTPサーバー有効化

「ラズパイとWindowsでリンクローカルアドレスFTP(1)SSL無し」のFTPサーバー有効化と同じです。

サーバー証明書の発行

IISのホームからサーバー証明書を発行します。

自己署名入り証明書の作成を選びます。

証明書のフレンドリ名(証明書名)に任意の名前を入力しOKを押します。
これで証明書が作成されます。

FTPサイトの追加

IISマネージャーからFTPサイトを追加します。

WindowsPCにホストするFTPサーバーのサイト名と使用するdirectory名を設定します。

SSL証明書に先ほど作成した証明書名を選択、ポリシーは「SSL接続が必要」を選択して次に進みます。

認証は基本を選択し指定されたユーザーとしてWindowsに普段ログインするユーザーを指定します。

アクセス権は読み書き両方つけます。

lftpの設定

先ほどWindowsで作成した自己署名入り証明書を読み込みftp.crtという名前でuser directoryに保存します。

今回WindowsPCのリンクローカルアドレスは169.254.191.227でした。

echo | openssl s_client -showcerts -connect 169.254.191.227:21 -starttls ftp | \
sed -n "/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p" | \
tee ftp.crt

ftp.crtがあることを確認します。

user@MyPi:~ $ ls
ftp.crt

user directoryにlftpの設定ファイル.lftprcを作り以下の設定をします。

~/.lftprc
set ftp:ssl-auth TLS
set ftp:ssl-force true
set ftp:ssl-allow true
set ftp:ssl-protect-list true
set ftp:ssl-protect-data true
set ftp:ssl-protect-fxp true
set ssl:verify-certificate yes
set ssl:ca-file "ftp.crt"
set ssl:check-hostname no

動作確認

「ラズパイとWindowsでリンクローカルアドレスFTP(1)SSL無し」の動作確認と同様に、クライアント(ラズパイ)のサンプルファイルをサーバー(WindowsPC)に転送し、サーバー上でrenameしてクライアントで取得します。

サンプルファイル作成

サーバーに転送するサンプルファイル:test.txtを作成します。

user@MyPi:~ $ echo "Hello FTP!" | tee test.txt
user@MyPi:~ $ ls
ftp.crt test.txt

lftpでFTPサーバー(WindowsPC)にログインします。

user@MyPi:~ $ lftp -u win-user 169.254.191.227
Password: Windowsのログインパスワード
lftp win-user@169.254.191.227:~>

サーバーに認証されていることを確認します

lftp win-user@169.254.191.227:~> ls
lftp win-user@169.254.191.227:/>

まだ何もファイルないことが確認できます。
認証に失敗しているとここでエラーが出ます。

クライアントからサーバーにFTP転送

サーバーにtest.txtをputします。

lftp win-user@169.254.191.227:/> put test.txt
11 bytes transferred
lftp win-user@169.254.191.227:/>

test.txtがサーバー上にあることを確認します。

lftp win-user@169.254.191.227:~> ls
11-26-23  01:38AM                   11 test.txt
lftp win-user@169.254.191.227:/>

サーバーからクライアントにFTP転送

先ほど転送したtest.txtのファイル名を変更します。

lftp win-user@169.254.191.227:/> mv test.txt win-test.txt
mv test.txt=>win-test.txt [Waiting for response...]
rename successful
lftp win-user@169.254.191.227:/> ls
11-26-23  01:38AM                   11 win-test.txt
lftp win-user@169.254.191.227:/>

クライアントからサーバー上のwin-test.txtをgetします。

lftp win-user@169.254.191.227:/> get win-test.txt
11 bytes transferred
lftp win-user@169.254.191.227:/>

lftpから抜けてラズパイのuser directoryにwin-test.txtが存在することを確認します。

lftp win-user@169.254.191.227:/> exit
user@MyPi:~ $ ls
ftp.crt test.txt  win-test.txt

SSLを有効化したFTPサーバーに対してラズパイ上のFTPクライアントからput/getできることが確認できました。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0