ウェブサイト検索

Let's Encryptの無料HTTPS/SSL証明書はどのように機能しますか?


Let's Encryptは無料でSSL証明書を発行しており、これを使用してウェブサイト上のトラフィックを安全に暗号化し、URLバーに緑の南京錠を表示します。これがないと、あなたは安全性が低いHTTPを使用し続けることになります。

HTTPS/SSL証明書とは何ですか?

誰かがあなたのウェブサイトに接続すると、その人のブラウザはあなたのウェブサイトに対して自己認証を求め、接続に侵入者がいないことを確認します。これはSSL証明書を使って行われ、これは認証機関(CA)からあなたに与えられます。

CAはあなたのドメイン名を追跡し、暗号化に使用されるあなたの公開鍵に関連付けます。あなたのウェブサイトに接続するすべての人は、あなたのウェブサイトのトラフィックを暗号化するために正しい鍵を使用していることが確認できるため、あなたは自分が言っている人でなければなりません。誰もCAを信頼している限り、悪意のある誰も新しいSSL証明書を偽造できません。なぜなら、それらはCAによって署名され、CAのみが発行できるからです。

これは、SSL証明書を持っている限り、人々があなたのウェブサイトを使用している間にその接続を監視したり、あなたのウェブサイトを偽装したりすることができないことを意味します。これにより、HTTPSは非常に便利で、はるかに安全です。Let's Encryptの普及により、93%のウェブトラフィック(Google経由)は現在HTTPSであり、あなたのウェブサイトがHTTPSでない場合、Googleの検索結果での順位が大幅に下がります。

Let's Encrypt はどのように異なりますか?

Let's Encryptは完全に無料で使用できます。これはCAとしては珍しく、ほとんどのCAは年間数百ドルの支払いを必要とします。これがLet's Encryptの大きな利点です---特別な機能が必要ない場合、簡単にウェブサイトをHTTPSで保護できます。

ただし、Let's Encryptにはいくつかの欠点もあります。彼らの証明書は90日間のみ有効ですが、更新を自動化できるため、大きな問題ではありません。また、彼らはドメイン検証(DV)証明書しか提供しておらず、これは単にあなたのドメインを保護します。彼らは組織検証(OV)証明書を提供しておらず、これはあなたがビジネスを登録する必要があります。また、彼らは拡張検証(EV)証明書を提供しておらず、これは広範な審査プロセスを必要とし、URLバーにあなたのビジネス名が表示されます。

しかし、OV証明書にはあまり利点がなく、銀行や大規模な機関を運営していない限り、EV証明書は必要ないでしょう。そのような場合、費用をかける余裕があるかもしれません。実際、AmazonでさえEV証明書を持っていません。

ほとんどの人にとって、90日ごとに証明書を更新することに抵抗がなければ、今の時代、LetsEncryptよりも高級なものを持つ意味はあまりありません。

Let's Encrypt証明書の設定方法

SSL証明書をインストールするサーバーにコマンドラインアクセスが必要です。また、SquareSpaceのようなマネージドホスティングプロバイダーを持っている場合、ホストがLet's Encryptをサポートしていることがあり、いくつかのプロバイダーではデフォルトで有効になっています。他のプロバイダー、たとえばGoDaddyは、有料プランの一部としてSSLを提供しており、代替オプションの使用が制限される場合があります。プロバイダーがリストに載っているかどうかや、Let's Encryptを有効にする方法を確認できます。この記事では、自分のウェブサーバーでの手動設定に焦点を当てます。

証明書を取得するには、ACMEクライアントを使用する必要があります。これは、あなたの代わりにLet's Encryptと通信し、あなたのドメイン名が正当であることを確認するプログラムです。Let's Encryptは、使用を推奨しています。

certbot

ウェブサーバーに自動でインストールする証明書を作成するコマンドラインユーティリティです。

もしcertbotがnginxやApacheの設定ファイルをいじることを望まないのであれば、別のACMEクライアントを使って手動で証明書を生成することができます。それをあなたの設定に手動で追加する必要があり、証明書を90日ごとに更新する必要があります(自動的に行うこともできますが、その設定は自分で行う必要があります)。ほとんどの人にとって、Certbotで十分です。

Certbotのインストールと使用

インストールは実行しているOSによって異なりますが、CertbotはUnixシステムでのみ動作するため、Windowsでは動作しません。通常は、ディストリビューションのパッケージマネージャーからインストールするだけで済みます。UbuntuのようなDebianベースのシステムでは、以下のようになります:

sudo apt-get install certbot

ただし、パッケージマネージャーにcertbotのリポジトリを追加する必要があります。幸いなことに、Certbotのウェブサイトには各ディストリビューションのより完全なインストール手順があります。使用しているウェブサーバーと実行しているOSを選択してください。Certbotが必要なパッケージをインストールするためのコマンドのリストを提供します。それを実行し、インストールが完了するまで待ちます。

終わったら、走りたくなるでしょう:

sudo certbot --nginx

--nginx フラグを使用しているウェブサーバーに置き換えます。Certbotは新しい証明書を生成し、それをnginxの設定にインストールします。実際に、以下のように手動ACMEクライアントとしてCertbotを実行することができます:

sudo certbot --nginx certonly

これにより、手動でウェブサーバーにデプロイできる証明書ファイルが生成されます。

Certbot は、ほとんどのディストリビューションで cron または systemd タイマーを使用して自動的に更新を管理するため、期限切れになることを心配する必要はありません。この cron ジョブは、確認したい場合は通常 /etc/cron.d/certbot にあります。

1つ注意すべきことは、このcronジョブがcertbot renewを実行するのは一度だけであり、その完了後に新しい設定を適用するためにウェブサーバーを自動的に再起動しないことです。このcronジョブに--renew-hookを使って追加のコマンドを添付し、nginxを再読み込みするためのコマンドを次のように渡すことができます:

certbot renew --renew-hook "/etc/init.d/nginx reload"

コマンドラインから直接証明書を手動で更新することもできます:

sudo certbot renew

これを行った後、ウェブサーバーを再起動する必要があります。

HTTPSトラフィックの取り扱い

HTTPSは通常のHTTPとは少し異なります。HTTPのデフォルトポートは80で、これは通常ウェブサーバーで開いています。HTTPSはポート443で動作するため、HTTPSが機能するためには、ファイアウォールですべてのポートが開いていることを確認する必要があります。

さらに、HTTPSを持っているので、すべてのHTTPトラフィックをブロックしたいと思うかもしれません。これをnginxのルールで実行できます:

server {

listen 80 default_server;

server_name _;

return 301 https://$host$request_uri;

}

これにより、すべてのポート80トラフィックがHTTPSリンクにリダイレクトされます。これはデフォルトのポート80サーバーを置き換えるため、他に何もそのポートで実行されていないことを確認してください。

関連記事: