はじめに
Let’s Encrypt無料のSSLサーバー証明書が取得できます。世の中進歩しました。ただし有効期間はそこまで長くなく、90日だそうです。それでも無料で取得できるメリットは大きいですね。証明書を取得するためのWindowsクライアントであるWIN-ACMEを使って証明書の取得方法を記録しておきます。自宅サーバーのOSはWindows10として説明しています。(2023年4月時点での内容です)
ドメインと自宅サーバーについて
まずはドメイン名を取得し、サーバーを用意する必要があります。ドメインは自宅サーバーであれば「No-IP」という無料で使えるDynamicDNSサービスがあります。ここでは、ドメインを取得している前提にて話を進めていきます。取得したドメインを「hoge.example.jp」と仮定しています。
サーバーは「XAMPP」を使ってみました。XAMPPはWebサーバー、そのたもろもろ必要な様々なサーバー、ソフトウェアがまとめて入っているオールインワンサーバーと思ってもらうとよいでしょう。ボタン一つでサーバーが起動しますが、初期状態でセキュリティがまあまあ、あれな状態なんで、設定に気を付ける必要があります。様々なサイトでXAMPPの設定はされていますので、ここでは割愛させてもらいます。
win-acmeで証明書の発行手順
次のサイトhttps://www.win-acme.com/の右上のDOWNLOADボタンよりダウンロードします。
ZIPファイルをダウンロードして、解凍します。ここでは、解凍したフォルダを「acme」として、C:ドライブ直下に移動させたとします。解凍フォルダにあるwasc.exeを管理者権限のコマンドプロンプトやPowerShellより起動します。Windowスタートボタンを右クリックして「ターミナル(管理者)」を選択して、「cd c:\acme」でフォルダ移動して
「./wacs.exe」
にて実行します。メニューを入力する形式で、証明書を発行します。
「M」または「m」を入力してフルオプションにて証明書を作成します。
「2」でマニュアル入力していきます。IISは使っていないので、サポートしてないとか言われますが、ほっておきます。IISとはMicrosoftが提供するWindowsのサーバーソフトです。Windows10などのOSの場合は接続制限があるので、Apache等のWebサーバーがいいかもしれません。
サーバーのホスト名を入力しています。「hoge.example.jp」はもちろん一例です。
「Enter」で次へすすめます。Frendly nameを入力するとのことですが、検索するとMicrosoft関連のサイトがヒットします。IIS関連の何かでしょうか。しらんけど。
4を選択します。ドメインやホストごとに証明書を分けたい場合は1,2のようです。やったことないけれど。
1を選択します。認証の方法を聞いています。wacsが認証のためのファイルを作り、それをLet’s Encryptが確認して認証います(たぶん)。他のやり方は、試したことありません。
Webサイトを公開しているフォルダのパスを指定します。XAMPPをインストールした場合、デフォルトで「C:\xampp\htdocs」となっています。DocumentRootと呼ばれるフォルダで、http.confファイルで設定できます。DocumentRootを変更している場合は、変更したフォルダへのパスを指定してください。ここで指定したフォルダに、先ほどの認証のためのファイルが一時的に作られて、Web経由でアクセスされ認証されるという仕組みです。
yキーで進めます。
証明書を保存するパスを入力します。証明書は1つのファイルで構成されておらず、証明書と鍵のファイルと合わせて2つのファイル構成になっています。証明書は.pem、鍵は.keyの拡張子になります。XAMPPではデフォルトで証明書と鍵フォルダが分かれていますが、WACSでは1つのフォルダしか指定できないようです。ここでは、「c:\sslcert」と指定おきました。その中に、証明書ファイルと鍵ファイルが作成されます。ただし、フォルダが作成されていないと、おこられてしまうので、指定したフォルダを作成しておいてください。
なんかい聞くねん!と思った方は正解です。他の方法での証明書はいるんか?と聞いているようです。いらないので5を選択しました。
yを選択。利用規約(Terms of service)をデフォルトアプリで開くかどうか聞いてきます。yで利用規約のPDFファイルが表示されます。
yを選択。同意するかどうかですね。もちろん自分の意志で同意してください。
連絡先のメールアドレスを聞いています。入力して次へと進みます。
Do you want to specify the user the task will run as? (y/n*)
と聞いてきて、タスクとして実行するか聞いてきます。実行する場合はyを選択して、以下の問にWindowsのアカウントとパスワードを入力します。
Enter the user’s password:
Enter the username (Domain\username):
どうやらタスクで自動で実行してくれるようです。ありがたや。この後はQで終了できます。
「c:\sslcert」フォルダを見てください。hoge.example.jp-crt.pemが証明書、hoge.example.jp-key.pemが鍵ファイルになります。それらを活用すれば、暗号化ができます。
計4つのファイルが入っていますが、「chain」と文字が入っているファイルは間ファイルと呼ばれるもので、apache2.4以降は不要のようです。
あとは、Apacheのhttpd-ssl.confやhttpd.conf等を編集すれば、晴れてSSL証明書付きの自宅サーバーとなれるわけです。