Let’s Encrypt CAをから証明書を取得する方法について。
Contents
Let’s Encrypt
Let’s Encrypt は、2014年に設立されたSSL/TLSサーバー証明書を無料で発行してくれる認証局(CA)です。
しばらくベータ版として運用されていましたが、2016年4月から正式版となりました。
幅広いプラットフォームに対応しており、ほとんどのブラウザで信頼済みの証明書として扱われます。
しかし、ガラケーやニンテンドー3DSなど一部の端末は対応していません。
エージェントソフトのインストール
まず、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にアクセスできなければ認証できないので注意してください。