Let’s Encryptで無料のSSL証明書を取得

Pocket

Let’s Encrypt CAをから証明書を取得する方法について。

Let’s Encrypt

Let’s Encrypt は、2014年に設立されたSSL/TLSサーバー証明書を無料で発行してくれる認証局(CA)です。
しばらくベータ版として運用されていましたが、2016年4月から正式版となりました。
幅広いプラットフォームに対応しており、ほとんどのブラウザで信頼済みの証明書として扱われます。
しかし、ガラケーやニンテンドー3DSなど一部の端末は対応していません。

Let’s Encrypt

エージェントソフトのインストール

まず、certbotというLet’s Encryptのエージェントソフトをインストールします。
※certbotは証明書を取得したいドメインのサイトが稼働しているサーバにインストールしてください。
以下に記述するコマンドはすべてUbuntu環境で確認したものですが、他の環境でもそう違いはないと思います。

任意のディレクトリにソースを取得します。

cd /usr/local/
git clone https://github.com/certbot/certbot

certbotディレクトリにソースがダウンロードされるので、そのディレクトリに移動し、certbot-autoを実行します。

cd certbot/
./certbot-auto

バージョンを確認するにはインストール後に以下のコマンドを実行します。

./certbot-auto --version

証明書の取得

証明書の取得をするまえに、証明書を取得したいドメインのサイトにhttpかhttpsでアクセスできることを確認してください。(後述のドメイン認証のため)

証明書を取得するには以下のようなコマンドを実行します。

./certbot-auto certonly --webroot \
-w ドキュメントルートのパス -d ドメイン名

ドキュメントルートが /var/www/example、ドメイン名が example.com の場合はコマンドはこうなります。

./certbot-auto certonly --webroot \
-w /var/www/example -d example.com

ドメイン認証

ここに記したコマンドで証明書を取得するにはエージェントソフトとWebサーバが同じサーバに設置されていることが前提となります。

Let’s Encryptそのドメインの持ち主に対してのみ証明書を発行します。
どのようにドメインの持ち主を判別するのかについて Let’s Encryptの How It Works に説明があります。

ざっくり言うと

  • Let’s Encryptはサーバの管理者を公開鍵で識別します。
  • 最初にエージェントソフトがLet’s Encryptに接続して新しい鍵のペアを生成してLet’s Encrypt CAに対してサーバのドメインを証明します。
  • 次にエージェントはLet’s Encrypt CAにそのドメインをエージェントが制御していることを証明するために何が必要かを問い合わせます。
  • Let’s Encrypt CAはそれに対して幾つかの方法を提示します。(DNSレコードや指定のURIリソースの提供等)
  • エージェントが要求に答え、https://example.comの指定のURIにファイルを作成することでCAがドメインを認証する準備ができます。

先ほどのコマンドは指定のURIにリソースを設置することで認証しています。
(コマンド実行後にドキュメントルートの下に.well-knownというディレクトリが作成されているはずです。)
Let’s Encrypt CAからそのドメイン名でhttpまたはhttpsにアクセスできなければ認証できないので注意してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です