Let's Encrypt の設定（Windows Server） 

#Let's Encrypt の設定（Windows Server） 

## 謝辞
以下のサイトを参考にさせていただきました。
[Let's EncryptでIIS上にSSLサイトを導入する方法\(無料\) \| Web備忘録](https://webbibouroku.com/Blog/Article/letsencrypt-setting)

## 実行環境
終始Windows Server内にて作業しました。（リモートにて）
OSはWindows Server 2016です。

## Let's Encryptの導入
以下のサイトからzipファイルをダウンロード
https://github.com/Lone-Coder/letsencrypt-win-simple/releases
（執筆時、2017/10/27 現在 v1.9.7 beta9 が最新）
でしたが、Latest releaseのv1.9.6.2 を使いました。
また、v1.9.6からNew UXになっているらしく、他の解説サイトと微妙に画面遷移が変わっているようです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/49910/f4345e5c-6b08-08da-5c81-9035baae067e.png)


# 画面下の方にスクロールするとDownloadsの見出しでファイルリストが並んでいます。
下の方にいくにつれて新しいようなので下の方をダウンロードします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/49910/4eed6502-d27e-ca92-b5ac-306fed2b1b6c.png)


## ファイルの解凍
ファイルを解凍すると以下のような状況になっていると思います。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/49910/8bbe8e7a-1707-785a-13b6-5be28f54cb11.png)

ここからさきはコマンドプロンプトにて実行していきます

ローカルのWebサイトのフォルダ直下に、/.well-known/acme-challengeを作成します。
.well-known　はエクスプローラーでは作成できないので、mkdir .well-known として作成します。
その下にacme-challengeを作成して、さきほどダウンロード・解凍したファイル「Web_Config.xml」を「web.config」とリネームして保存します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/49910/aaf0202f-29ab-af04-b5a1-7ebe3215dc1d.png)

これでLetsEncriptがこのフォルダにアクセスできるようになり準備が完了しました。

## 証明書を取得する

ここからは解凍したフォルダをカレントにしてコマンドプロンプトにて作業していきます。
まずは管理者権限でコマンドプロンプトを起動します。
その後、解凍したフォルダへカレントフォルダを変更します。
`> cd c:^temp^`

下記の書式で環境に合わせて letsencrypt.exe を実行します。

書式

```
letsencrypt --accepttos --manualhost ＜Webサイトの完全修飾ドメイン名＞ --webroot ＜ローカルのWebサイトのパス＞
具体例
letsencrypt --accepttos --manualhost www.webbibouroku.com --webroot C:\hoge\webbibouroku
```

実行すると処理が始まり、初回の場合はメールアドレスの入力を求められますので入力して続行します。

メールアドレス入力のスクリーンショットを取りわすましたが、入力を求められたらアドレスを入れてください。

その後は証明書を作成するかなどのメニューが表示されます。
```
 N: Create new certificate
 W: [Legacy] Generate a certificate via WebDav and install it manually.
 F: [Legacy] Generate a certificate via FTP/ FTPS and install it manually.
 L: List scheduled renewals
 R: Renew scheduled
 S: Renew forced
 C: Cancel scheduled renewal
 X: Cancel *all* scheduled renewals
 Q: Quit
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/49910/a5ab1073-c11c-e7cf-8a47-be65ed001754.png)

Nを入力してEnter

```
 1: Single binding of an IIS site
 2: All bindings for a single IIS site
 3: All bindings for multiple IIS sites
 4: Manually input host names
 C: Cancel
```
 Which kind of certificate would you like to create?:

と尋ねられますので、登録しているドメイン全部をまとめて証明書とりたい場合には３を入力します。

その後、証明書が作成されます。私の環境ではいかに作成されました。
` C:\ProgramData\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org`


その後、実行しているユーザー名を尋ねられますので、ログインしているユーザー名とパスワードを入力してください。

```
Do you want to specify the user the task will run as? (y/n): - yes

 Enter the username (Domain\username): administrator

 Enter the user's password: ************
 [INFO] Renewal scheduled 2,3,5 - renew after 2017/12/25 10:40:35 午前
```

これで処理が完了します。

最初からやり直したい場合いにはyを押せば最初のメニューに戻ります。

 Would you like to start again? (y/n):

![image.png](https://qiita-image-store.s3.amazonaws.com/0/49910/f4f663a1-bb1a-9e72-588b-2ef05a44ebf0.png)

バインドメニューを表示すると、httpsの設定までも完了しています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/49910/a580a3d2-4d8d-618b-f0c5-c1ab7c8a1ad5.png)


あとはhttps://xxxxx
でアクセスしてみて、正常にアクセスできたら成功です。


＃　証明書の更新タスク


タスクスケジューラを起動し、左のツリーでタスクスケジューラライブラリを選択すると、タスクの一覧が中央に表示されます。その中に、letsencrypt-win-simple httpsacme-v01.api.letsencrypt.org という名前のタスクがあります。


![image.png](https://qiita-image-store.s3.amazonaws.com/0/49910/30f35097-e3f3-d146-0611-3f32fc2e444d.png)