ハックライフノート

技術的な話とか、覚え書き

[Apache]Let's EncryptでSSL対応化した話(ワイルドカード使用)

ずっとやろうと思っていたけどやらなかった、自鯖で運用しているwebサーバーのSSL対応についてです。

SSLってなんぞやって話については調べれば腐るほど情報がありますが、一言で言えば安全性を高める技術ってことです。

サイトをリクエストしたクライアントPCとサーバー間の通信をセキュアにしてくれるので、今の時代はまず導入しているのが一般的になりつつあります。

将来的にはSSL対応していないサイトは表示すらできなくなる可能性もあります。

そうなったら面倒なので、重い腰をあげて取り掛かりました。


で、SSL対応をするには証明書の発行が必要で、無料や有料のものもピンキリであるんですが、有料のものは大体個人で扱うような価格設定ではないケースが多いので、今回は無料で発行できるLet's Encryptを利用して証明書の発行を行いました。

まあ、webサーバー自体放置状態なので・・・


証明書の発行はサーバーで行いますが、Let's Encryptの場合certbotという自動で証明書を発行してくれるクライアントソフトがあるので、それを落とします。

yum install epel-release

epelレポジトリをインストールしていない場合は、まずepelレポジトリを導入します。

yum install certbot python-certbot-apache

で、certbot本体をインストール。

次にcertbotを利用して証明書の発行をするんですが、自分の環境では複数のサブドメインを運用しているのでそれ用のコマンドを引数として与えてやります。

sudo certbot certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory -d alterzero.net -d *.alterzero.net

長いですが、こんな感じでコマンドを実行するとcertbotが走り対話形式で設定を聞いてきます。

alterzero.netの部分はご自身の環境に合わせて下さい、ちなみにこのドメインは私が趣味で取得したドメインですが今の所何もコンテンツがありません。

これを機に色々と立ち上げてみるつもりですが・・・

話が逸れましたが、対話形式では基本的に英語の内容を読んでyes or noを答えて下さい。

ただし、途中でDNSにTXTレコードを追加しろと言ってくるので、大人しくドメイン管理サービスでTXTレコードを設定します。

_acme-challengeをサブドメインとし、レコードの種類をTXT、valueについては表示されている暗号みたいな文字列をそのままぺっと貼っつけて下さい。

その後、追加したTXTレコードがドメインに追加されているかをチェックします。

nslookup -q=txt _acme-challenge.alterzero.net

とでも投げれば、最初は見つからないと言われますが数分も経てば追加したTXTレコードのvalueが流れてきます。

ここでも当然ご自身のドメインを指定して下さい。

後はさっきの途中で止めているcertbotでEnterを押して続けて下さい。

Conguratulation!と出ていれば、証明書の発行は終わりです。

/etc/letsencrypt/live/(ドメイン名)/のディレクトリ以下に各証明書と秘密鍵が生成されているので、そちらを使用しましょう。

cert.pem = サーバー証明書
privkey.pem = 秘密鍵
chain.pem = 中間証明書

Apacheへの環境設定は多分各個人でバラバラなので、次回あたりにでも私の環境での導入を書いておこうと思います。