win-acmeを使ってLet’s Encryptの無料SSL証明書発行 

# はじめに
Let’s Encrypt無料のSSLサーバー証明書が取得できます。世の中進歩しました。ただし有効期間はそこまで長くなく、90日だそうです。それでも無料で取得できるメリットは大きいですね。証明書を取得するためのWindowsクライアントであるWIN-ACMEを使って証明書の取得方法を記録しておきます。自宅サーバーのOSはWindows10として説明しています。（2023年4月時点での内容です）

## ドメインと自宅サーバーについて
まずはドメイン名を取得し、サーバーを用意する必要があります。ドメインは自宅サーバーであれば[「No-IP」](https://www.noip.com/)という無料で使えるDynamicDNSサービスがあります。ここでは、ドメインを取得している前提にて話を進めていきます。取得したドメインを「hoge.example.jp」と仮定しています。

サーバーは「XAMPP」を使ってみました。XAMPPはWebサーバー、そのたもろもろ必要な様々なサーバー、ソフトウェアがまとめて入っているオールインワンサーバーと思ってもらうとよいでしょう。ボタン一つでサーバーが起動しますが、初期状態でセキュリティがまあまあ、あれな状態なんで、設定に気を付ける必要があります。様々なサイトでXAMPPの設定はされていますので、ここでは割愛させてもらいます。

# win-acmeで証明書の発行手順

次のサイトhttps://www.win-acme.com/の右上のDOWNLOADボタンよりダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/36af2c14-7bfa-67c1-d2ca-fabbc23aaa2c.png)

ZIPファイルをダウンロードして、解凍します。ここでは、解凍したフォルダを「acme」として、C:ドライブ直下に移動させたとします。解凍フォルダにあるwasc.exeを管理者権限のコマンドプロンプトやPowerShellより起動します。Windowスタートボタンを右クリックして「ターミナル（管理者）」を選択して、「cd c:\acme」でフォルダ移動して

「./wacs.exe」

にて実行します。メニューを入力する形式で、証明書を発行します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/1fd61879-ebc9-3e02-7500-a3ae06199ebe.png)
「M」または「m」を入力してフルオプションにて証明書を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/c4224123-a07c-8f9a-4ec0-32ed8d4a5aba.png)
「2」でマニュアル入力していきます。IISは使っていないので、サポートしてないとか言われますが、ほっておきます。IISとはMicrosoftが提供するWindowsのサーバーソフトです。Windows10などのOSの場合は接続制限があるので、Apache等のWebサーバーがいいかもしれません。

サーバーのホスト名を入力しています。「hoge.example.jp」はもちろん一例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/90850bb0-9203-9036-59b9-ada5245e6cc2.png)
「Enter」で次へすすめます。Frendly nameを入力するとのことですが、検索するとMicrosoft関連のサイトがヒットします。IIS関連の何かでしょうか。しらんけど。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/40b5714c-3036-c72d-58e7-85bd7d0e1bcc.png)
４を選択します。ドメインやホストごとに証明書を分けたい場合は１，２のようです。やったことないけれど。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/ff73006a-ca67-9bd3-e1e9-ca31944ce475.png)
１を選択します。認証の方法を聞いています。wacsが認証のためのファイルを作り、それをLet’s Encryptが確認して認証います（たぶん）。他のやり方は、試したことありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/0dd68dbb-1df3-2d92-ab67-58a8fb4e819c.png)

Webサイトを公開しているフォルダのパスを指定します。XAMPPをインストールした場合、デフォルトで「C:\xampp\htdocs」となっています。DocumentRootと呼ばれるフォルダで、http.confファイルで設定できます。DocumentRootを変更している場合は、変更したフォルダへのパスを指定してください。ここで指定したフォルダに、先ほどの認証のためのファイルが一時的に作られて、Web経由でアクセスされ認証されるという仕組みです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/29a20b65-8264-cc8e-d8ba-d05bb82dddc4.png)
yキーで進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/b959c22e-0ae3-c66c-0e7c-50f7782f686a.png)
2を選択します。RSAが一般的と思われます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/ab44a187-3665-df9a-b4f2-038ebe7f5028.png)
2を選択します。Apacheって書いてあるしね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/5f04de57-d1fb-fad1-0f34-75e456a34f5a.png)
証明書を保存するパスを入力します。証明書は1つのファイルで構成されておらず、証明書と鍵のファイルと合わせて2つのファイル構成になっています。証明書は.pem、鍵は.keyの拡張子になります。XAMPPではデフォルトで証明書と鍵フォルダが分かれていますが、WACSでは1つのフォルダしか指定できないようです。ここでは、「c:\sslcert」と指定おきました。その中に、証明書ファイルと鍵ファイルが作成されます。ただし、フォルダが作成されていないと、おこられてしまうので、指定したフォルダを作成しておいてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/1dbafc6b-5d4b-75d3-5f29-a6deca216e07.png)
1を選択しました。パスワードを付けるかと聞いてきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/d684845b-dfbf-41e2-fbcf-85a2d6c973a0.png)
なんかい聞くねん！と思った方は正解です。他の方法での証明書はいるんか？と聞いているようです。いらないので5を選択しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/6789d71d-b445-5e2a-125d-bb7848ca121a.png)
3を選択して、インストールのステップへ進みました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/d9d21245-835f-5443-d93b-f540cecf83e2.png)
yを選択。利用規約（Terms of service）をデフォルトアプリで開くかどうか聞いてきます。yで利用規約のPDFファイルが表示されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/354ec90e-e57a-40c3-6d5f-acb86e06066d.png)
yを選択。同意するかどうかですね。もちろん自分の意志で同意してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/09e657a9-4929-d3fe-5b27-9dedf82637e1.png)
連絡先のメールアドレスを聞いています。入力して次へと進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536745/55c415f2-d1d3-f4da-0b05-af1990136d31.png)
適当なドメインを入れたので失敗しています。成功すると

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が鍵ファイルになります。それらを活用すれば、暗号化ができます。

計４つのファイルが入っていますが、「chain」と文字が入っているファイルは間ファイルと呼ばれるもので、apache2.4以降は不要のようです。

あとは、Apacheのhttpd-ssl.confやhttpd.conf等を編集すれば、晴れてSSL証明書付きの自宅サーバーとなれるわけです。