Debian10にNginxの無料SSL証明書をインストールする方法


ウェブサイトを設定する際に留意すべき重要な考慮事項の1つは、サイトのセキュリティです。 SSL証明書は、ユーザーのブラウザからWebサーバーに送信されるデータを暗号化するデジタル証明書です。このように、送信されるデータは、Wiresharkなどのパケットスニファを使用して通信を傍受および盗聴するハッカーから機密で安全です。

次のスクリーンショットに示すように、暗号化されたサイトのURLバーには南京錠の記号があり、その後に頭字語httpsが続きます。

暗号化されていないサイトでは、通常、URLバーに「安全ではありません」という通知が表示されます。

開始する前に、次の要件が満たされていることを確認してください。

  1. A running instance of Debian 10 Minimal Server.
  2. A running instance of Nginx Web Server with Domain Setup on Debian 10.
  3. A registered Fully Qualified Domain Name (FQDN) with the A record pointing to the IP address of the Debian 10 on your Domain Provider.

このチュートリアルでは、 tecmint.com がIPアドレス192.168.0.104をポイントしています。

この記事では、Let’s EncryptSSLをDebian10にインストールして、Nginxがホストするサイトの無料SSL証明書を取得する方法を検討します。

Let’s Encrypt SSLは、EFF(Electronic Frontier Foundation)からの無料の証明書で、3か月間有効で、有効期限が切れると自動更新されます。ポケットが狭い場合は、サイトを暗号化する簡単で安価な方法です。

余計な手間をかけずに、Let’sEncryptをNginxWebサーバーにインストールしてみましょう。

ステップ1:Debian10にCertbotをインストールする

まず、Certbotをインストールする必要があります。これは、Let’s Encryptのデジタル証明書を取得し、後でそれをWebサーバーに展開するソフトウェアです。これを実現するには、python3-certbot-nginxパッケージをインストールする必要があります。ただし、その前に、まずシステムパッケージを更新しましょう。

$ sudo apt update

次のステップは、python3-certbot-nginxパッケージに必要な依存関係をインストールすることです。

$ sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface

それでは、python3-certbot-nginxパッケージをインストールしましょう。

$ sudo apt install python3-certbot-nginx

ステップ2.Nginxサーバーブロック構成の確認

certbotがNginxWebサーバーにSSL証明書を自動的に展開するには、サーバーブロックを構成する必要があります。前の記事の最後のセクションで、Nginxサーバーブロックの構成について説明しました。

熱心にフォローしている場合は、/ etc/nginx/sites-available/some_domainにサーバーブロックがあるはずです。私たちの場合、Nginxサーバーブロックは次のようになります

/etc/nginx/sites-available/tecmint.com

さらに、server_nameディレクティブがドメイン名に対応していることを確認してください。

server_name tecmint.com www.tecmint.com;

すべてのNginx構成が正しいことを確認するには、次のコマンドを実行します。

$ sudo nginx -t

上記の出力は、すべてが順調であることを示しています。

手順3:HTTPSポートを開くようにファイアウォールを構成する

常に推奨されているように、ufwを構成して有効にしている場合は、ファイアウォールを越えてHTTPSプロトコルを許可し、すべてのユーザーがWebサーバーにアクセスできるようにする必要があります。

$ sudo ufw allow 'Nginx Full'

次に、ファイアウォールをリロードして変更を有効にします。

$ sudo ufw reload

プロトコルがファイアウォールを通過することを許可したことを確認します。

$ sudo ufw status

ステップ4:ドメインのSSL証明書を暗号化して展開する

すべての設定と構成を確認したら、Let's EncryptSSL証明書を取得してドメインサイトに展開します。

$ sudo certbot --nginx -d domain-name  -d www.domain-name.com 

私たちの場合、

$ sudo certbot --nginx -d tecmint.com -d www.tecmint.com

最初のステップでは、メールアドレスを入力するように求められます。住所を入力してEnterキーを押します。

次に、利用規約に同意するよう求められます。 Aと入力して続行します。

Certbotは、EFFの最新の開発に関する通知を送信するために、電子メールを使用することに同意を求めます。ここでは、オプトインまたはオプトアウトを選択し、オプトインしてY(Yes)と入力し、Enterキーを押します。参加を辞退するには、N(いいえ)を押します。

次に、CertbotはLet’s Encryptに連絡し、SSL証明書をダウンロードして、作成済みのNginxサーバーブロックに展開します。

次のセクションでは、 2 と入力して、通常のHTTPトラフィックをHTTPSにリダイレクトします。

証明書がNginxサーバーにデプロイされ、Let’s EncryptSSLを使用してウェブサーバーが暗号化されたことを確認するお祝いの通知が届きます。

ステップ5:NginxWebサイトでHTTPSを確認する

Webブラウザーを介して変更を確認するには、ブラウザーのタブを更新し、南京錠の記号に注意してください。

南京錠のアイコンをクリックし、[証明書]オプションを選択して、SSL証明書の詳細を表示します。

すべての証明書の詳細が表示されます。

https://www.ssllabs.com/ssltest/でサイトのURLをテストすることにより、Webサーバーのステータスをさらに確認できます。 WebサーバーがSSL証明書を使用して暗号化されている場合、次のようにAスコアが取得されます。

このチュートリアルは終了しました。ガイドでは、Debian10にNginx用の無料のSSL証明書をインストールする方法を学びました。