2018年3月よりLet’s EncryptのSSLサーバ証明書でワイルドカードが利用可能となりましたので、設定手順を記しておきます。有効期限が90日(約3ヶ月)と短いですが、自動更新設定しておくことで定期的に更新されますので、手動で更新する必要が無くなります。

自動更新設定は以下サイト参照
https://qiita.com/ooxif/items/99ad3c93d4d6862d45f0

目次

実施環境

環境は以下の通りです。

  • CentOS 7.2
  • Apache 2.4.25

ドメインは便宜上hogehoge.comのワイルドカード設定とします。

Certbotインストール

まずは以下のコマンドでCertbotをインストールします。(インストール済みの場合は不要です)
Certbotは0.22.0からACMEv2に対応しており、DNS-01チャレンジにも対応しているそうです。

SSLサーバ証明書のファイル生成

以下のコマンドで証明書ファイルを生成します。
ワイルドカードで生成する場合は *.hogehoge.com と記述します。

途中でメール送付の同意を求められるので、N+Enter

すると、_acme-challenge.[hogehoge.com]に対して、トークンが発行されますので、
指定ドメインのTXTレコードに上記で指定されたトークを設定します。

DNSサーバを自前で用意していない場合は、ドメインを管理しているレジストラ(お名前.comやムームードメインなど)で設定します。

DNSの設定は、反映に時間がかかる場合がありますので、反映されるまで暫く待機します。
DNSの反映が済みましたら、Enter押下で照合・証明書ファイル生成が行われます。

ちなみに、失敗すると以下のようなエラーメッセージが表示されます。

SSLサーバ証明書の確認

上記で証明書ファイルの生成を行うと、以下ディレクトリが生成されていますので、確認してみましょう。(ドメイン名に応じて任意のディレクトリとなっているはずです。)

シンボリックリンクで、数字付きのファイルを見ていますが、証明書を更新する際ににシンボリックリンクの向きも更新されますので、特にパスの変更は必要ありません。

SSLサーバ証明書の設定

Apache2.4の場合の記述です。
httpd-ssl.conf 等で上記の証明書を読むように指定します。
SSLの暗号化強度の設定等はここでは割愛します。

上記を記述後にapacheの記述にシンタックスエラーが出なければ、再起動をして完了です。

Webサイトの場合はブラウザから証明書を確認してみると、無事更新されています。

証明書の自動更新設定

先述のとおり、Let’s Encryptは90日間の有効期限ですので、自動更新の設定をしておくべきです。DNSの設定でエラーが発生したので、以下のサイトを参考にcloudflareでネームサーバを変更すれば対応可能です。
https://qiita.com/ooxif/items/99ad3c93d4d6862d45f0