序章
Let’s Encryptは、無料のTLS / SSL証明書を簡単に取得してインストールできる新しい認証局(CA)であり、Webサーバーで暗号化されたHTTPSを有効にします。 必要な手順のほとんど(すべてではないにしても)を自動化しようとするソフトウェアクライアントCertbotを提供することにより、プロセスを簡素化します。 現在、証明書の取得とインストールのプロセス全体は、ApacheとNginxの両方のWebサーバーで完全に自動化されています。
このチュートリアルでは、Certbotを使用して無料のSSL証明書を取得し、Ubuntu14.04LTSのNginxで使用する方法を示します。 また、SSL証明書を自動的に更新する方法についても説明します。
このチュートリアルでは、個別のサーバーブロックファイルの代わりに、デフォルトのNginx構成ファイルを使用します。 ドメインごとに新しいNginxサーバーブロックファイルを作成することをお勧めします。これは、いくつかの一般的な間違いを回避し、デフォルトファイルを意図したとおりのフォールバック構成として維持するのに役立ちます。 代わりにサーバーブロックを使用してSSLを設定する場合は、このNginxサーバーブロックをLet’sEncryptチュートリアルでフォローできます。
前提条件
このチュートリアルに従う前に、いくつかのことが必要になります。
sudo
権限を持つ非rootユーザーのUbuntu14.04サーバー。 このようなユーザーアカウントを設定する方法については、Ubuntu14.04チュートリアルのサーバーの初期設定に従ってください。- Nginxがインストールされています、 Ubuntu14.04LTSにNginxをインストールする方法
- 証明書を使用する登録済みドメイン名を所有または管理する必要があります。 まだドメイン名を登録していない場合は、そこにある多くのドメイン名レジストラの1つに登録できます(例: Namecheap、GoDaddyなど)。
- ドメインがサーバーのパブリックIPアドレスを指すDNSARecord。 それらを追加する方法の詳細については、このホスト名チュートリアルに従うことができます。 これは、Let’sEncryptが証明書を発行しているドメインを所有していることを検証する方法のために必要です。 たとえば、
example.com
の証明書を取得する場合、検証プロセスを機能させるには、そのドメインをサーバーに解決する必要があります。 この設定では、ドメイン名としてexample.com
とwww.example.com
を使用するため、両方のDNSレコードが必要です。
すべての前提条件が整ったら、Let’sEncryptクライアントソフトウェアであるCertbotのインストールに進みましょう。
ステップ1—Certbotをインストールする
Let’s Encryptを使用してSSL証明書を取得するための最初のステップは、サーバーにcertbot
ソフトウェアをインストールすることです。 Certbot開発者は、最新バージョンのソフトウェアを使用して独自のUbuntuソフトウェアリポジトリを維持しています。 Certbotは非常に活発に開発されているため、このリポジトリを使用して、Ubuntuが提供するよりも新しいCertbotをインストールする価値があります。
まず、リポジトリを追加します。
- sudo add-apt-repository ppa:certbot/certbot
同意するには、ENTER
を押す必要があります。 その後、パッケージリストを更新して、新しいリポジトリのパッケージ情報を取得します。
- sudo apt-get update
そして最後に、apt-get
を使用してCertbotをインストールします。
- sudo apt-get install python-certbot-nginx
certbot
Let’sEncryptクライアントを使用する準備が整いました。
ステップ2—Nginxを設定する
CertbotはNginxのSSLを自動的に構成できますが、構成内で正しいserver
ブロックを見つけることができる必要があります。 これは、証明書を要求しているドメインに一致するserver_name
ディレクティブを探すことによって行われます。 Nginxの新規インストールを開始する場合は、デフォルトの構成ファイルを更新できます。
- sudo nano /etc/nginx/sites-available/default
既存のserver_name
行を検索します。
server_name localhost;
localhost
をドメイン名に置き換えます。
server_name example.com www.example.com;
ファイルを保存して、エディターを終了します。 次のコマンドを使用して、構成編集の構文を確認します。
- sudo nginx -t
それがエラーなしで実行される場合は、Nginxをリロードして新しい構成をロードします。
- sudo service nginx reload
これで、Certbotは正しいserver
ブロックを見つけて更新できるようになります。 次に、HTTPSトラフィックを許可するようにファイアウォールを更新します。
ステップ3—SSL証明書を取得する
Certbotは、さまざまなプラグインを介してSSL証明書を取得するためのさまざまな方法を提供します。 Nginxプラグインは、Nginxの再構成と、必要に応じて構成の再読み込みを処理します。
- sudo certbot --nginx -d example.com -d www.example.com
これは、--nginx
プラグインでcertbot
を実行し、-d
を使用して、証明書を有効にする名前を指定します。
certbot
を初めて実行する場合は、メールアドレスを入力して利用規約に同意するよう求められます。 その後、certbot
はLet’sEncryptサーバーと通信し、チャレンジを実行して、証明書を要求しているドメインを制御していることを確認します。
それが成功すると、certbot
はHTTPS設定をどのように構成するかを尋ねます。
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
選択してENTER
を押してください。 構成が更新され、Nginxがリロードして新しい設定を取得します。 certbot
は、プロセスが成功し、証明書が保存されている場所を通知するメッセージで終了します。
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
expire on 2017-10-23. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again with the
"certonly" option. To non-interactively renew *all* of your
certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
これで、証明書がダウンロード、インストール、および構成されました。 https://
を使用してウェブサイトをリロードしてみて、ブラウザのセキュリティインジケータに注目してください。 これは、サイトが適切に保護されていることを表す必要があり、通常は緑色の鍵のアイコンが付いています。 SSL Labsサーバーテストを使用してサーバーをテストすると、Aグレードになります。
ステップ4—Certbotの自動更新を確認する
Let’s Encryptの証明書は、90日間のみ有効です。 これは、ユーザーが証明書の更新プロセスを自動化することを奨励するためです。 インストールしたcertbot
パッケージは、systemdタイマーを介して「certbotrenew」を1日2回実行することで、これを処理します。 非systemdディストリビューションでは、この機能は/etc/cron.d
に配置されたスクリプトによって提供されます。 このタスクは1日2回実行され、有効期限が切れてから30日以内の証明書を更新します。
更新プロセスをテストするには、certbot
を使用してドライランを実行できます。
- sudo certbot renew --dry-run
エラーが表示されない場合は、すべて設定されています。 必要に応じて、Certbotは証明書を更新し、Nginxをリロードして変更を取得します。 自動更新プロセスが失敗した場合、Let’s Encryptは指定した電子メールにメッセージを送信し、証明書の有効期限が近づくと警告を発します。
結論
このチュートリアルでは、Let’sEncryptクライアントcertbot
をインストールし、ドメインのSSL証明書をダウンロードし、これらの証明書を使用するようにNginxを構成し、証明書の自動更新を設定しました。 Certbotの使用についてさらに質問がある場合は、それらのドキュメントから始めることをお勧めします。