Let's Encrypt でワイルドカード対応のSSL証明書を取得するための手順

Photo by Robert Anasch on Unsplash
はじめに
VPSでWebサイトを動かして取得した独自ドメインに対してLet's Encryptの証明書を設定する機会があったのでその手順をまとめます。サブドメインにも対応するためにワイルドカードでのSSL証明書も取得しました。ワイルドカード対応でも無料です。
前提と環境
私の環境としては、さくらVPSのUbuntu + Nginxで動作させるWebサイトでした。ただ、ワイルドカード対応のSSL証明書を取得するのに必要な手順自体は、OSやWebサーバアプリによらないのでその他の場合でも同様になると思います。ただ、取得したワイルドカード対応の証明書をWebサーバに設定する手順は、Nginxのものになります。
- VPSのOS : Ubuntu18.04
- Webサーバ : Nginx
- 独自ドメインは取得済とし、VPSですでに使用できる状態とする。この記事では、例として独自ドメインを
example.com
として説明します。
なお、Let's Encryptについては、さくらインターネットの以下の記事が参考になりました。
レンタルサーバーの標準機能と言っても過言ではないほど、近年急速に無料SSL機能が普及してきました。実はレンタルサーバーを提供している会社側がSSL証明書を無償提供しているだけで、利用しているSSL証明書や認証局は様々であり、当然コストが発生している可能性もあります。今回はその中でも最も有名なLet’s Encryptについてご紹介します。
作業の流れ
作業としては、VPS側での作業と、取得した独自ドメインのDNS管理サービス側での作業があります。私はムームードメインで取得した独自ドメインをさくらVPSで使用しており、さくらインターネットのDNSサーバを使用しています。
- certbotを導入する(VPS側)
- certbotでSSL証明書を取得する(VPS側)
- 所有者確認のためにDNSレコードを追加する(DNS管理サービス側、1回目)
- 追加したDNSレコードを確認する(VPS側、1回目)
- 所有者確認のためにDNSレコードを追加する(DNS管理サービス側、2回目)
- 追加したDNSレコードを確認して完了(VPS側)
以下のサイト様が参考になりました。
VPSによるWebサーバー運用講座の連載2回目です。 今回は、安全にsshのログインを行うため「公開鍵認証(こうかいかぎにんしょう」の設定をします。 公開鍵認証は、そのメカニズムが複雑なため、設定する段階で挫折してしまう方が多いようです。ここでは理論はとりあえず置いといて、設定ができることに重点をおき説明します。今まで公開鍵認証の設定で苦労した方にご一読いた……
certbotを導入する(VPS側)
まずはじめにVPSのUbuntuにcertbotを導入します。certbotは、SSL証明書を管理するためのツールです。certbotは、アメリカの電子フロンティア財団(Electronic Frontier Foundation, 略してEFF)という非営利組織が管理しています。以下が公式サイトです。
certbotの公式サイトにも掲載されていますが、Ubuntuへの導入手順は簡単です。以下のコマンドを順番に実行し、certbotと必要な関連パッケージをインストールします。
以上でcertbotの導入は完了です。 なお、certbotの公式サイトには、その他のOSにおけるcertbotのインストール手順、さらにNginxやApacheなどのWebサーバそれぞれの設定方法も記載されています。
certbotでSSL証明書を取得する(VPS側)
certbotのインストールが完了したら、後は以下のコマンドを実行してワイルドカード対応の証明書を取得します。
上記の各オプションの説明は以下です。
オプション名 | 説明 |
---|---|
certonly |
証明書の取得のみを行い、インストールはしない |
--manual |
手動で証明証の取得作業を実施するために指定。 |
--preferred-challenges dns-01 |
独自ドメインの所有者確認を指定する。dns-01 を指定することで、DNSサーバにcertbotに指示された値を設定して確認を実施。これは後述。 |
--server |
証明書発行を処理するサーバーの指定。 |
-m youremail@example.com |
Let's Encrypt の使用者として登録する自身のメールアドレス。Gmailなどでも指定できますが、気になる方は独自ドメインのEmailを指定してもいいかもしれません。 |
-d *.example.com |
ワイルドカード対応の独自ドメインを指定して、これに対するSSL証明書を取得する。 |
ACMEについては以下の記事が参考になりました。
2018年7月はWeb業界にとって記憶に残る日になるでしょう。httpsが標準となった日として。 これまでWebサイトへのアクセスにはhttpを利用するのが通常...
上記コマンドを実行するといくつか質問が表示されます。まずはじめに、以下のように利用規約に同意するか確認されます。メッセージ内のリンク先にあるPDFを確認の上、問題なければA
を入力してEnterを押下します。
続いて、Let's EncryptのパートナーであるEFFとあなたのメールアドレスを共有して良いか?と確認されます。Y
としてOKすると、EFFからEFFの活動についてメールが届くようになります。ここではN
としました。
次に、このコマンドを実行しているサーバーのIPアドレスをログし、SSL証明書を要求したIPとして公開状態とするが良いか?と確認されます。ここではY
にして同意しないとこれ以上進めることはできません。いずれにせよ、元々このサーバはWebサイト用に使用するためY
として進めます。もし、実際に本番用に使うサーバでなければ、本番用サーバでやり直すのがいいかもしれません。
上記でY
として進めると、以下のようにDNSレコードとして設定する文字列が表示されて待機状態になります。
上記の状態になったら、上記内の以下の値をメモしておきます。なお、example.com
は各自の独自ドメインになっていると思います。
_acme-challenge.example.com
KiejN-Skifje8-slejntONRwW9ko3ijJAopoie21KAI
メモしたら、上記はそのまま置いておいて、DNS管理サービス側でDNSレコードとして登録する作業になります。
所有者確認のためにDNSレコードを追加する(DNS管理サービス側、1回目)
certbotが表示した情報をDNSレコードとして登録する手順を説明します。ここでは、さくらVPSで独自ドメインを使用している場合の手順を説明しますが、その他のサービスを使用していても、やること自体は決まっているので各自置き換えてください。 さくらVPSを使用している場合は、以下のようにさくらVPSのダッシュボードから、左側メニューにある「ネームサーバ登録」をクリックします。
「ネームサーバ登録」をクリックすると、以下のように「ドメインリスト」というメニューがあるのでこれをクリックします。
続いて以下のように、取得済のドメイン一覧が表示されるので、certbotでSSL証明書を設定しようとしている独自ドメインの「ゾーン編集」をクリックします。
「ゾーン編集」をクリックすると、以下のように独自ドメインのDNSレコード情報が表示されます。ここで、赤線枠内にあるように「変更」をクリックします。
「変更」をクリックすると、以下のように「エントリの追加と変更」というフォームが表示されるので、ここで先程メモした情報を入力します。
具体的には、以下のようになります。
項目名 | 説明 |
---|---|
エントリ名 | _acme-challenge を入力。_acme-challenge の後には各自の独自ドメインが表示されていると思います。 |
種別 | 「テキスト(TXT)」を選択 |
値 | certbotが表示したKiejN-Skifje8-slejntONRwW9ko3ijJAopoie21KAI を入力 |
DNSチェック | 「する」のままでOK |
TTLの指定 | そのままチェックしない状態でOK |
上記を入力したら、「新規登録」をクリックし、さらに左側にある「データ送信」をクリックします。
以上でDNSレコードの追加が完了です。後ほど全く同じ作業をもう一度行う必要があります。
ここで、自分のパソコンなどのターミナルから、dig
コマンドを使用して追加したDNSレコードが反映されたかを確認します。example.com
は各自の独自ドメインに、your.dns.ne.jp
は各自が使用しているDNSサーバのドメインに置き換えてください。例えばさくらインターネットならば、ns1.dns.ne.jp
などがDNSサーバのドメインです。
上記のdig
コマンドの実行結果として、先程DNSレコードに登録した値が表示されていれば反映されています。これでVPS側の作業に戻れます。もしDNSレコードに登録した値が表示されない場合は、しばらく待機します。私の場合も反映されるまでに15分ほどかかりました。
追加したDNSレコードを確認する(VPS側、1回目)
DNSレコードを追加したら、VPSに戻り以下の状態で止めていたところでEnterを押下すれば完了です。ただし、DNSレコードを追加してから反映されるまでに少々時間がかかります。そしてこの反映前にEnterを押下しても失敗するため、反映されるまで待機する必要があります。反映されたかどうかは、前述したdigコマンドを使用して確認できます。
上記でEnterを押下して進めると、また違う値で同じ作業をするよう要求されますので、改めてDNS管理サービス側(ここでは、さくらインターネット)で1回目と同じ作業をします。
所有者確認のためにDNSレコードを追加する(DNS管理サービス側、2回目)
1回目と全く同じ作業を実施して、DNSレコードにcertbotが指示した値を登録します。なお、1回目で登録した値は削除したり2回目の値で置き換えずににそのまま残し、新しい値として登録します。 すなわち、最終的に以下のようになります。
2個めの登録が完了したら、dig
コマンドで反映されたことを確認できるまで少々待機します。
反映が確認できたらDNS管理サービス側での作業は全て完了です。
追加したDNSレコードを確認して完了(VPS側)
VPS側に戻って改めてEnterを押下して成功すると、以下のように表示されて無事に証明書を取得できます。
上記の中で、以下の2つのパスを各自が使用しているNginxやApacheに必要な設定を行います。
/etc/letsencrypt/live/example.com/fullchain.pem
/etc/letsencrypt/live/example.com/privkey.pem
Nginxに取得したSSL証明書を設定する
例えばですが、以下が最低限のNginxの設定になります。
もし、UbuntuやDebianのデフォルトのNginxパッケージからインストールしている場合は、conf.d
というディレクトリはなく、代わりにsites-avilable
などがあると思いますので、そちらで設定を修正してください。
まとめ
Let's Encryptは無料でワイルドカード対応の証明書までも使えるのでとても便利です。とりあえずSSL化した場合にはおすすめです。
関連記事
- 公開日:2020/02/16 更新日:2020/02/16
圧縮、暗号化、リモート対応の差分バックアップを作成できる「Borg Backup」の使い方
圧縮、暗号化に対応し差分バックアップを作成できるソフトウェアである「Borg Backup」をUbuntuにインストールして使ってみたのでその手順をまとめます。「Borg Backup」はLinux、macOSに対応しています。
- 公開日:2020/02/14 更新日:2020/02/14
自分専用の後で読むサービスを構築できる「Wallabag」をUbuntu + Nginxで構築する手順
後で読むサービスのPocketにかなり近く、機能豊富なオープンソースのWallabagをUbuntuにインストールしたのでその手順をまとめます。
- 公開日:2020/02/12 更新日:2020/02/12
ファイル単位で暗号化して保存できるCryptomatorをインストールして使う手順
Cryptomatorは、ファイル単位での暗号化が可能なソフトウェアです。この記事では、UbuntuにCryptomatorをインストールする手順と使い方をまとめます。
- 公開日:2020/01/22 更新日:2020/01/22
WireGuardでVPNサーバーを構築してスマホやPCから接続する手順
WireGuardはOpenVPNよりもシンプルで高速、より安全なVPNとして開発が進められており、OpenVPNに代わるVPNとして期待されています。この記事ではWireGuardを使ってVPNサーバーを構築し、そのVPNサーバーにUbuntuやiPhoneから実際に接続してみるまでの手順をまとめます。
- 公開日:2020/01/17 更新日:2020/01/17
ディレクトリ表示や移動をインタラクティブに実行できるコマンドツール「Broot」
Linuxで端末を使っている時にディレクトリ構造をざっくり確認したり各ディレクトリにどのようなファイルが入っているかを確認したりしたい場合があると思います。Brootはディレクトリ構造を表示しつつさらにそこから各ディレクトリに移動したりファイルを検索したりできるコマンドラインツールです。
開発アプリ
