Windows環境でWebサーバーやFTPサーバーを構築する場合、セキュリティ強化などの目的でサーバー証明書を利用したいときがあります。
インターネットに公開するサーバーなら、正規のサーバー証明書を準備するべきですが、ローカルネットワークにのみ公開するサーバーやテスト目的のサーバーなら、自己署名証明書で対応する方法があります。
そこでここではWindows 10を例に「Internet Information Service(IIS)」またはPowerShellで、自己署名証明書を作成する方法を紹介します。
目次
IISで自己署名証明書を作成
IIS(Internet Information Services)で自己署名証明書を作成する手順は、次のとおりです。
まず「インターネット インフォーメーション サービス(IIS)マネージャー」を起動し、画面中央のIIS欄にある「サーバー証明書」をダブルクリックします。
「サーバー証明書」画面が表示されるので、画面右側のメニューから「自己署名入り証明書の作成」をクリックします。
「フレンドリ名を指定します」画面が表示されるので、フレンドリ名に任意のわかりやすい名前を入力して「OK」をクリックします。
「サーバー証明書」画面に戻ると、一覧に作成した自己署名入り証明書が表示されています。
なお、IISマネージャー画面で作成した自己署名証明書の有効期限は1年です。
PowerShellで自己署名証明書を作成
自己署名証明書は、PowerShellコマンドレット「New-SelfSignedCertificate」でも作成でき、この方法では証明書の期限をコマンドのオプションで指定できるので、長期間有効な証明書を作成したいときは、こちらの方法がおすすめです。
New-SelfSignedCertificate (pki) | Microsoft Docs
New-SelfSignedCertificateコマンドレットで自己署名証明書を作成する手順は、次のとおりです。
管理者権限でPowerShellを起動して、次のようにコマンドを実行します。
PS> New-SelfSignedCertificate -DnsName PC-002 -FriendlyName "ftps-server" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(10)
「-FriendlyName」の値には、管理上のわかりやすい任意の名前を指定し、「-DnsName」の値には、マシンのドメイン名やホスト名を指定し、「-NotAfter」オプションの値には、証明書の有効期間を指定します。
コマンド実行後、ThumbprintやSubjectが表示されていれば正常に作成されています。
ちなみに、上記のコマンドでは10年間有効の自己署名証明書を作成しています。
作成された自己署名証明書は「インターネット インフォーメーション サービス(IIS)マネージャー」上で確認することができます。
また、証明書マネージャ「Certlm.msc」の「個人」>「証明書」で確認することもできます。
作成した自己署名証明書をサーバーに設定する
作成した自己署名証明書をWebサーバーやFTPサーバーに設定する方法として、ここでは例として、IIS上で稼働しているFTPサーバーに、作成した自己署名証明書を設定して、FTPSサーバーにする手順を紹介します。
まず「インターネット インフォーメーション サービス(IIS)マネージャー」を起動し、画面左側のサイトから、サーバー証明書を設定するFTPサーバーを選択し、画面中央で「FTPのSSL設定」をダブルクリックします。
「FTPのSSL」画面が表示されるので「SSL証明書」のプルダウンで、あらかじめ作成しておいた自己署名証明書を選択し、SSLポリシーで「SSL接続が必要」を選択してから「適用」をクリックします。
最後に「サービス」で「Microsoft FTP Service」を再起動すれば、FTPSサーバーとして稼働させることができます。
試しに、FTPS接続ができるツール「Filezilla」を使って接続してみると、接続時に以下のような警告が表示されるものの、問題なく接続できました。