Web サーバを建てて運営している人も意外といるようですが、
https(SSL)対応に切り替えていないケースも少なくないようです。

ここでは無料で発行できる Let’s Encrypt の SSL 証明書を
Web 上で発行できる SSL For Free の証明書発行手順と
Windows の Web サーバ 04WebServer での SSL 設定を紹介します。

04WebServer

小規模の Web サーバであれば、これで十分ですね。
インストールすれば Web サーバが動作する状態になり、
ServerControoler でウインドウから容易に設定を行う事ができます。

04WebServer

Apache や nginx の設定ファイルにうんざりしている人は
日本語で表示されるウインドウ表示で安心して設定できるでしょう。

セキュリティ関連もいくつかのサイトで確認しましたが、
投稿時点(2018年11月現在)で 1.83 以前が対象、最新が 1.92 なので、安心して使えます。
サポートページにも セキュリティ情報 のページがあり、把握・対策されてあります。

セキュリティ情報 | 04WebServer サポートページ

Let’s Encrypt

IT 関連の人でなくても、把握している人がいるでしょう。
Web ブラウザ Google Chrome は http の通信で「保護されていない通信」と表示します。
それ以前にも実は Google 検索で https ページが優先表示されるようになっています。

HTTPS ページが優先的にインデックスに登録されるようになります | Google ウェブマスター向け公式ブログ
保護されたウェブの普及を目指して | Google ウェブマスター向け公式ブログ

この説明にあるリンクからカンファレンスをしている YouTube 動画が見られるのですが……

Mythbusting HTTPS (Progressive Web App Summit 2016) | YouTube

この動画でも紹介されている無料の SSL 証明書が Let’s Encrypt です。
(関連する部分は 21 分頃から)

Windows から Let’s Encrypt の証明書を発行する場合、
Windows ACME Simple (WACS) を使用する方法があります。

PKISharp/win-acme - Windows ACME Simple (WACS)| GitHub

しかし、世界的に使われているダイナミック DNS ddns.net のサブドメインでは
制限にひっかかってこの方法で発行する事ができませんでした。
そこで Web 上で発行する手段を用いました。

SSL For Free

今回は SSL For Free を使って証明書を発行しました。
Let’s Encrypt の証明書を Web 上で発行してくれるサイトの一つです。

SSL For Free から証明書を発行する

新規で Web サーバを構築している場合は、
https://(サーバ名)/ にしたい場合、
この段階で http://(サーバ名)/ で参照できる状態にしておいて下さい。

04WebServer ディレクトリ設定

04WebServer であれは、インストールしてあればサーバは起動しているので、
LocalPath の場所を確認・設定します。変更した場合はサーバを再起動して下さい。
ルータの転送設定もお忘れなく。http://(サーバ名)/ で参照できる事を確認します。

SSL For Free サーバ名を入力

(サーバ名) を入れます。これが https が有効となるサーバ名です。

SSL For Free 選択肢

3 つの選択肢になります。左より……

  • FTP で必要なファイルを自動アップロードし、Web 参照で認証する
  • 必要なファイルをダウンロードして入れ、Web 参照で認証する
  • DNS に TXT レコードを追加し認証する

自前の Web サーバでダイナミック DNS を使用している場合だと
FTP・DNS はできず、真ん中の選択肢一択となります。

SSL For Free 説明文

この表示から更にすすめると、ファイルをダウンロードし、
http://(サーバ名)/.well-known/acme-challenge/(ファイル) で
参照できるようにするよう表示されます。
.well-known フォルダ、更にその中へ acme-challenge フォルダを作り、
その中にダウンロードした (ファイル) を入れます。
(ファイル) のファイル名とその中身は発行毎に毎回変化します。
. が頭にあるフォルダはエクスプローラーからだと生成できませんが、
PowerShell・コマンド プロンプト から MKDIR コマンドで生成できます。
表示されている URL をクリックし、正常に文字列が表示されている事を確認し
クリックを押します。これで証明書が発行されます。

発行手順はこれだけなんです! 簡単でしょう?
有償の SSL 証明書だと CSR の生成を行って、
高価な証明書だと人的に所在確認まで行ってくれるのですが、
無償の証明書では、そのサーバを管理している事を証明できれば OK なのです。

表示は 3 種類で、まとめてダウンロードも可能です。次のファイルになります。

  • ca_bundle.crt CA(認証局)証明書
  • certificate.crt サーバ証明書本体
  • private.key 暗号鍵

CA 証明書は OS・ブラウザで含まれるため、他 2 ファイルを使用します。
Let’s Encrypt の期限は 3 ヶ月しかありません。
発行時にメールアドレス・パスワードを入れると、期限前にメール通知してくれます。
3 ヶ月おきにこの手順を行い、新たに発行された証明書・暗号鍵を更新していきます。

04WebServer の SSL 設定

Let’s Encrypt に限らず、SSL で行う事はほぼ一緒です。

04WebServer ディレクトリ設定

左サイド サーバ設定 - 右サイド サーバ基本設定 を選び、 SSL/TLS(HTTPS) タブ を選びます。

  • 秘密鍵ファイル に private.key(.pem ファイル→すべてのファイルに変更)
  • 秘密鍵のパスワード は なし(CSR を発行した場合は発行時に入力したパスワード)
  • サイト証明書のファイル に certificate.crt
  • 左上 SSL/TLSを有効にする にチェックを入れる

これで https の参照が可能になりました。

動作確認

Web ブラウザより https://(サーバ名)/ で参照し、確認してみて下さい。

fusen.ddns.net 参照

Google Chrome での参照。URL に鍵マークが付いて http と変わらず表示できれば成功です。


追記 2018/01/04

ワイルドカード付証明書は (サーバ名) に *.(ドメイン名) とします。
サブドメインなしと合わせて *.(ドメイン名) (ドメイン名) とする事が多いでしょう。
この場合の認証方法はネームサーバへのゾーン追加です。TXT ゾーンを追加します。