1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsサーバと自己証明書でFTPSサーバを構築する

Posted at

こんにちは
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

今回はWindowsサーバでFTPSサーバを構築していきたいと思います。
(Windows Server使いこなせると強いですよね。。。苦手意識払拭していきたいところではある。。。)

今回はExplicit FTPSでDataChannelはエファメラルポートを使用します。

環境構築

FTPS用のユーザを用意する

Windowsサーバにログインした後、ServerManagerを起動して、Computer Managementを押下します。
image.png

Local Users and GroupsからUsersを選択。一覧が表示されますので適当なところを右クリックしてNew Userを選択します。
image.png

今回はftp_adminというユーザを作成しました。
パスワード変更できない設定と、パスワード期限切れ無しはなんとなく入れてます。
image.png

ユーザが作成されたことを確認します。
image.png

作成したユーザを右クリックして、プロパティを表示。
Member ofで所属しているGroupを確認するとUsersグループのみ参加していることがわかります。
Addボタンを押下して、追加処理をしていきます。
image.png

Remote Desktop Usersと、Administratorsグループを追加します。
Applyして、OKします。
image.png

FTPSで使用するフォルダを用意する

今回はCドライブ直下にftp_folderを作成しました。これを使っていきたいと思います。
image.png

作成したフォルダのプロパティを開き、SecurityでAdministratorsがあることを確認します。
※ftp_adminユーザが所属するグループがあり、そのグループの権限にReadやWrite権限があればOKです。
※個別でグループを作成して、そのグループを明示的に指定してあげたほうが良いっぽくはあります。
image.png

FTPSサーバインストール

構築していきます。とはいいつつ、最初はFTPで構築して、あとからFTPS化していこうと思います。
まずServer Managerを開き、ManageタブからAdd Roles and Featuresを選択します。
image.png

Nextを押下して次に進みます。
image.png

Role-based or feature-based installationを選択している状態でNextを押下します。
image.png

自分のサーバが選択されている状態で次に進みます。
image.png

Server Rolesの部分で、Web Server(IIS)を選択します。
image.png

こんな感じのポップアップが表示されるので、Add Featuresを押して次に進みます。
image.png

Web Server Role(IIS)というタブが追加されているので、これを押下します。
今回はFTPSサーバを作るだけでWebサーバは不要なのでチェックを外して、FTP ServiceとIIS Management Consoleだけチェックを入れて次に進みます。
image.png

確認画面が出てきますので内容を確認してInstallを押下します。
image.png

Installation succceededとなることを確認します。
Closeを押下します。
image.png

Server ManagerのROLES AND SERVER GROUPSにFile and Storage ServicesとIISが表示されるようになっていることとを確認します。
image.png

FTPSサーバ構築

検索的でIISと検索すると、Internet Information Services(IIS) Managerが表示されるのでこれを押下します。
image.png

自分のコンピュータ名のSitesを右クリックするとAdd FTP Siteという項目があるのでこれを押下します。
image.png

サイト名とPhysical pathを求められます。以下のように入力して次に進みます。
サイト名:FTPS
Physical path:上記で作成したCドライブ配下のフォルダ
image.png

BindingはAll Unassaingnedで21ポート、SSLは後から設定を入れるのでここではNo SSLで次に進みます。
image.png

AuthenticationはBasic、AuthorizationはSpecific usersでftp_admin、PermissionはRead,Write双方にチェックを入れました。
ここでこの設定を入れることで、例えばWinSCPでアクセスする時に指定のユーザでしかFTPサーバを使えなくなります。
image.png

FTPサーバが用意できました。
image.png

Windows Defender Firewallは無効化しておきます。
AWSのSGでコントロールしているので、ここでは不要としています。これが有効化されていると、FTP接続できません。
image.png

試しにアクセスしてみます。
image.png

アクセスできました。フォルダ、ファイルも作成出来ていそうです。
image.png

サーバ側でも確認できました。
image.png

FTPS化をするための自己証明書を作成する

IIS Managerを開き、自分のサーバ名をクリック。
IISのところにServer Certificatesがあるのでこれをクリックします。
image.png

証明書が一覧で表示されます。画面右にあるCreate Self-Signed Certificateをクリックします。
image.png

フレンドリ名を任意のものとして、Personalを設定しOKをクリックします。
image.png

作成出来ました。これだと1年間の有効期限がついてしまい、変更できないようです。
これを使うでも良いのですが、有効期限が邪魔なのでPowerShellを使って作り直します。
※PowerShellを使わない場合はこれをFTPに噛ませればOKです。
image.png

PowerShellを管理者で起動します。
image.png

以下のコマンドを実行します。
-DnsNameのところはホスト名かIPアドレスだけでもいいのですが、一応どっちも付けておきます。
有効期限は100年としてます。

New-SelfSignedCertificate -DnsName "ftps-server", "57.181.41.99" -FriendlyName "ftps-server" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(100)

実行結果は以下となりました。

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Users\Administrator> New-SelfSignedCertificate -DnsName "ftps-server", "57.181.41.99" -FriendlyName "ftps-server" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(100)


   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject
----------                                -------
39D973BBC86E6497B72C6D83BBD42AACAC92F987  CN=ftps-server

certlm.mscを実行します。
PersonalからCertificatesを押下すると、2つ表示されています。1つはIIS Managerで作成したもの、もう一つはPowerShellで作成したものです。
image.png

FTPサーバに自己証明書を紐づける

IIS ManagerからFTPSのサイトを選択します。
FTP SSL Settingsを選択します。
image.png

自己証明書は100年指定したほうを、SSL PolicyはRequire SSL connectionsとします。
設定を反映するために画面右にあるApplyを押下します。
image.png

FTPサービスを再起動しておきます。
右クリックして、refreshを実行します。
image.png

接続テストをします。
その前に、名前解決をさせるためにWinSCPを起動しているPCの以下ファイルに追記をしていきます。

C:\Windows\System32\drivers\etc\hosts

以下を追記しました

# 20250920 FTPS検証用
57.181.41.99 ftps-server

cmdでping疎通を確認します。

Microsoft Windows [Version 10.0.26100.6584]
(c) Microsoft Corporation. All rights reserved.

C:\Users\ohtsu>ping ftps-server

ftps-server [57.181.41.99]に ping を送信しています 32 バイトのデータ:
57.181.41.99 からの応答: バイト数 =32 時間 =16ms TTL=117
57.181.41.99 からの応答: バイト数 =32 時間 =17ms TTL=117
57.181.41.99 からの応答: バイト数 =32 時間 =15ms TTL=117
57.181.41.99 からの応答: バイト数 =32 時間 =14ms TTL=117

57.181.41.99 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 14ms、最大 = 17ms、平均 = 15ms

Windows Server側もホスト名を変えておきます。
image.png

今度こそ接続テストです。
image.png

自己証明書の為以下の警告が出ますが、はいを選択します。
image.png

接続出来ました!
image.png

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?