Ubuntu 18.04 VPSまたは専用サーバーでLets Encryptを使用してApacheを保護する方法

前書き

Let’s Encryptは、非営利のインターネットセキュリティリサーチグループ(ISRG)によって設計された、無料で信頼できる自動認証局(CA)です。 CAは完全に自動化されたプロセスを利用して無料のSSL / TLS証明書を提供し、SSL証明書の作成、インストール、検証、および更新の必要性を手動で破棄します..


Let’s Encryptは、安全で透過的、協調的、かつ自動であるという理由だけで、主要なプログラムから信頼されています。 CAは、WebサイトのHTTPSを有効にし、プライバシーを尊重し安全なWebを作成するために必要なデジタル証明書を提供.

このチュートリアルは、Ubuntu 18.04 VPSホスティングまたは専用サーバーホスティングの信頼できるcertbotツールを介してLet’s Encryptを使用してApacheサービスを保護するのに役立ちます.

準備はいい?始めましょう!

始める前に

このプロセスを円滑に実行するには、以下が必要です。

  • ドメイン
  • サーバーにインストールされたApache
  • ドメイン名の完全に構成されたApache仮想ホスト。あなたは私たちのガイドを使うことができます 「Ubuntu 18.04でApache仮想ホストを設定する方法」 仮想ホストを構成する.

すべての準備が整ったら、インストールを開始できます.

ステップ1-Certbotのインストール

Let’s EncryptでApacheを保護する際の最初のことは、certbotツールをインストールすることです。このツールは、Let’s EncryptからSSL証明書を取得および更新するプロセスを自動化および合理化します。さらに、これらの証明書を使用するようにWebサーバーを構成するのに役立ちます.

まず、ローカルパッケージインデックスを更新します。

$ sudo apt update

次に、以下のコマンドを実行してCertbotをインストールします。

$ sudo apt install certbot

それでおしまい! certbotツールを正常にインストールしました.

ステップ2-強力なDHグループの生成

DHまたはDiffie Hellmanグループは、セキュリティで保護されていない通信チャネルを介した暗号化キーの交換を容易にする安全な環境を作成する信頼できるキー交換グループです。.

以下のコマンドを実行して、2048ビットのDH文字のスイートを作成します。

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

注意: サイズ2048を4096に置き換えることができます。そうすることで、システムエントロピーに応じてDHパラメータの生成に30分以上かかる場合があるため、辛抱する必要があります。.

ステップ3-SSL証明書の取得

Dhグループが生成されると、固有のドメインに必要なSSL証明書を取得できるようになります。このチュートリアルでは、 example.com ドメイン名として;この値を実際のドメイン名に置き換えることを忘れないでください.

このステップでは、Webrootプラグインを使用して、 example.com ディレクトリ内 $ {webroot-path} /。well-known / acme-challenge. Let’s Encryptの検証サーバーは、ドメインのDNSがcertbotツールを実行しているサーバーに解決されることを認証するようにHTTPアピールを行います.

HTTP要求をマッピングするだけです。 .よく知られている/ acme-challenge に / var / lib / letsencrypt. 次に、以下のコマンドを実行して必要なディレクトリを作成し、Apacheサーバーで書き込み可能にする.

$ sudo mkdir -p /var/lib/letsencrypt/.well-known
$ sudo chgrp www-data / var / lib / letsencrypt
$ sudo chmod g + s / var / lib / letsencrypt

次に、2つの固有の構成スニペットを作成して、コードの重複を防ぎます。まず、以下のコマンドを実行して、最初の構成ファイルを開きます。

$ sudo nano /etc/apache2/conf-available/letsencrypt.conf

このファイルに以下のコンテンツを追加します。

エイリアス/.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"

AllowOverrideなし
オプションMultiViewsインデックスSymLinksIfOwnerMatch IncludesNoExec
メソッドGET POST OPTIONSが必要

このファイルを保存して終了します.

次に、以下のコマンドを実行して、2番目の構成ファイルを開きます。

$ sudo /etc/apache2/conf-available/ssl-params.conf

以下のコンテンツをコピーして、このファイルに貼り付けます。

SSLCipherSuite EECDH + AESGCM:EDH + AESGCM:AES256 + EECDH:AES256 + EDH
SSLProtocolすべて-SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
ヘッダーは常に設定されます"max-age = 63072000; includeSubDomains;プリロード"
ヘッダーは常にX-Frame-Options DENYを設定
ヘッダーは常にX-Content-Type-Options nosniffを設定します
#Apacheが必要 >= 2.4
SSLCompressionオフ
SSLUseStapling on
SSLStaplingCache "shmcb:logs / stapling-cache(150000)"
#Apacheが必要 >= 2.4.11
SSLSessionTicketsオフ

SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

ファイルを保存して終了します.

注意: 2番目の構成スニペットは、HSTS(HTTP Strict Transport Security)によって承認されたチッパーを利用し、 Cipherli.st. スニペットは、セキュリティ中心のHTTPヘッダーを適用し、OCSP Staplingをアクティブにします.

次に、以下のコマンドを実行して有効にします Apache SSLモジュール そしてその mod_headers

$ sudo a2enmod ssl
$ sudo a2enmodヘッダー

次に、以下のコマンドを実行して、 SSL仮想ホスtと ssl-params.conf ファイル:

$ sudo a2enconf letsencrypt
$ sudo a2enconf ssl-params

Apache設定を再起動して、変更を実装します。

$ sudo systemctl reload apache2

ステージが設定されました。これで、Webrootプラグインを使用してcertbotを実装し、SSL証明書を取得できます。

$ sudo certbot certonly –agree-tos –email [email protected] –webroot -w / var / lib / letsencrypt / -d example.com -d www.example.com

証明書を取得すると、以下のメッセージが表示されます。

重要な注意:
– おめでとう!証明書とチェーンは次の場所に保存されています:
/etc/letsencrypt/live/example.com/fullchain.pem
キーファイルは次の場所に保存されました:
/etc/letsencrypt/live/example.com/privkey.pem
証明書の有効期限は2018-10-28です。新しいまたは微調整を取得するには
この証明書の将来のバージョンは、certbotを実行するだけです
再び。非インタラクティブに*すべての*証明書を更新するには、次を実行します。
"certbot更新"
– Certbotが気に入った場合は、以下のサポートを検討してください。

ISRGへの寄付/ Let’s Encrypt:https://letsencrypt.org/donate
EFFへの寄付:https://eff.org/donate-le

手順4-仮想ホストファイルの構成を変更する

以下のコマンドを実行して、固有のドメインの構成ファイルを開きます。

$ sudo nano /etc/apache2/sites-available/example.com.conf

このファイルに以下のコンテンツを追加します。

ServerName example.com
ServerAlias www.example.com

永続的なリダイレクト/ https://example.com/

ServerName example.com
ServerAlias www.example.com

永続的なリダイレクト/ https://example.com/

DocumentRoot /var/www/example.com/public_html
ErrorLog $ {APACHE_LOG_DIR} /example.com-error.log
CustomLog $ {APACHE_LOG_DIR} /example.com-access.logの組み合わせ

SSLEngineOn
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

#その他のApache設定

次に、Apacheサービスをリロードします。

$ sudo systemctl reload apache2

ウェブサイトを開いて、緑色の鍵アイコンが表示されるかどうかを確認します

ステップ5-自動更新の設定

新しくインストールされたSSL証明書は、90日間のみ有効です。 Certbotパッケージをセットアップして、有効期限が切れる前にSSL証明書を自動的に更新できます。パッケージは、毎日2回実行されるcronジョブを生成し、有効期限が切れる前に証明書を1か月更新します.

SSL証明書が自動的に更新されるたびに、Apacheサービスをリロードする必要があります。これを有効にするには、 /etc/cron.d/certbot とファイル –更新フック "systemctl reload apache2", 針.

このファイルは次のようになります。

0 * / 12 * * * root test -x / usr / bin / certbot -a! -d / run / systemd / system && perl -e ‘sleep int(rand(3600))’ && certbot -q renew –renew-hook "systemctl reload apache2"

次に、以下のコマンドを実行して、自動更新を確認します。

 $ sudo certbot renew –dry-run

エラーが発生しない場合は、SSL証明書の自動更新プロセスが正しく設定されています.

結論

それでおしまい! certbotツールとLet’s Encryptを使用して、特定のドメイン名のSSL証明書を取得しました.

これらの上位3つのLinuxホスティングサービスを確認する

FastComet

開始価格:
$ 2.95


信頼性
9.7


価格
9.5


使いやすい
9.7


サポート
9.7


特徴
9.6

レビューを読む

FastCometにアクセス

Hostinger

開始価格:
$ 0.99


信頼性
9.3


価格
9.3


使いやすい
9.4


サポート
9.4


特徴
9.2

レビューを読む

Hostingerにアクセス

ChemiCloud

開始価格:
$ 2.76


信頼性
10


価格
9.9


使いやすい
9.9


サポート
10


特徴
9.9

レビューを読む

ChemiCloudにアクセス

関連するハウツー記事

  • Apache Webサーバーを使用してUbuntu 18.04でWordPressマルチサイトを設定する方法
    中間
  • Ubuntu 18.04 VPSで実行されているApacheのキープアライブ設定を構成する方法
    中間
  • Ubuntu 18.04 VPSまたは専用サーバーでApache Mod_Rewriteを有効にする方法
    専門家
  • Ubuntu 18.04で.htaccessファイルを使用する方法
    初心者
  • Apache、MySQLのインストール方法 & Ubuntu 18.04 VPSまたは専用サーバー上のPHP
    中間
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me