GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7でLet'sEncryptを使用してApacheを保護する-ステップバイステップのプロセス?

SSL証明書は、アプリケーションにアクセスするユーザーに追加のセキュリティを提供するために使用されます。サーバーとクライアント間のトラフィックを暗号化します。 Let's Encryptは認証局(CA)です。 Webサーバーで暗号化されたHTTPSを有効にするための無料のTLS/SSL証明書を提供します。これは、自動化された無料のオープンな認証局です。

ここLinuxAPTでは、サーバー管理サービスの一環として、お客様が関連するLet'sEncryptクエリを実行するのを定期的に支援しています。

これに関連して、無料のLet's Encrypt SSL証明書をインストールすることにより、CentOS7でLet'sEncryptを使用してApacheを保護する方法を検討します。


Let'sEncryptをCentOS7にインストールする方法?

Let's Encrypt SSL証明書は、発行日から90日間有効です。当たり前のこととして、Let's Encrypt SSL証明書は、今日のすべての主要なブラウザによって信頼されています。

このインストール手順に着手する前に、次の前提条件が満たされていることを確認してください。

  • sudo権限を持つroot以外のユーザーがいるCentOS7実行システム。
  • このチュートリアルで説明されているように、Apacheをインストールして構成する必要があります。
  • このチュートリアルで説明されているように、ドメインにApache仮想ホストを用意します。
  • ドメイン名はサーバーのIPアドレスを指している必要があります。


1.Certbotクライアントをインストールします

サーバーにCertbotクライアントパッケージをインストールして、Let'sEncryptSSL証明書を取得することから始めます。 Certbotは、Let’s EncryptからSSL証明書を取得し、サーバーでHTTPSを自動有効化するために使用されるツールです。

certbotパッケージはEPELによって提供されます。したがって、次のように入力してEPELリポジトリを有効にする必要があります:

$ sudo yum install epel-release

次のコマンドを実行して、certbotクライアントをインストールします:

$ sudo yum install httpd mod_ssl python-certbot-apache

タイプ別にcertbotのインストールを確認してください:

$ certbot --version

インストールが成功すると、certbotのバージョンが表示されます。


2.ファイアウォールを設定する

ファイアウォールを実行していない場合は、スキップできます。

WebサーバーにSSLをインストールするには、ファイアウォールでポート80と443が開いていることを確認する必要があります。次のコマンドを使用して、firewalld内のポートを開くことができます。

$ sudo firewall-cmd --add-service=http
$ sudo firewall-cmd --add-service=https
$ sudo firewall-cmd --runtime-to-permanent

サーバーでiptablesが実行されている場合は、以下のコマンドを実行して、ポート80とポート443のトラフィックを有効にする必要があります。

$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT


3.ApacheでLet'sEncryptSSLを設定する

これですべての準備が整ったので、Let'sEncryptからSSL証明書を取得するように要求します。 certbotを使用してリクエストするのは、非常に簡単なプロセスです。 Let's Encryptはドメインの所有権を検証し、成功した場合は要求されたドメインに対してSSLを発行します。プラグインを介してLet'sEncrypt証明書を取得する方法は複数あります。以下のコマンドを実行してSSLを要求します:

$ sudo certbot --apache -d example.com -d www.example.com

上記のコマンドでは、example.comドメインとwww.example.comドメインの両方のSSL証明書を要求します。

certbotを初めて実行する場合は、SSLの更新と有効期限に関連する電子メールアラートの送信に使用できる電子メールアドレスの入力を求めるプロンプトが表示されます。また、利用規約への同意も求められます。

その後、certbotはLet's Encryptサーバーと通信し、証明書を要求しているドメインを所有していることを確認するためのチャレンジを実行します。

検証が成功すると、HTTPS設定をどのように構成するかを尋ねられます:

Please 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):

選択肢を選択して、次のステップに進みます。構成ファイルを手動で変更したくない場合は、リダイレクトオプションを選択することをお勧めします。

最後に、成功したメッセージが表示されます。

最後に、ドメインはLet’sEncryptSSL証明書で安全です。 HTTPSプロトコルを使用してサイトにアクセスすることで確認できます。


Apacheのその他の安全なSSL設定

Apacheバージョンを使用したCentOSのデフォルトのSSL構成は古くなっているため、安全性が低く、セキュリティの問題が発生します。そのため、より安全にするためにいくつかの設定を変更する必要があります。

より安全なSSL関連のオプションを構成するには、ssl.confファイルを開きます。

$ sudo vi /etc/httpd/conf.d/ssl.conf

まず、ファイル内にSSLProtocol行とSSLCipherSuit行を見つけてコメントアウトするか、これら2行を削除できます。

# SSLProtocol all -SSLv2
. . .
# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
Now append the following lines after VirtualHost block in /etc/httpd/conf.d/ssl.conf file.
. . .
. . .
# Begin copied text
# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11

次に、ファイルを保存して閉じます。変更を有効にするには、Apacheサービスを再起動する必要があります。

以下のコマンドを実行します:

$ sudo systemctl restart httpd

Let's Encrypt SSL証明書の自動更新を実行するにはどうすればよいですか?

Let's Encrypt SSL証明書は90日間有効なので、有効期限が切れる前に更新する必要があります。有効期限が切れる前に証明書を自動的に更新するために、1日に2回実行され、有効期限が切れる30日前に証明書を自動的に更新するcronジョブを作成します。

以下のコマンドでcrontabを編集して新しいジョブを作成しましょう:

$ sudo crontab -e

ファイルの最後に次の行を追加して、1日に2回実行されるようにします。

0 */12 * * * /usr/bin/certbot renew >> /var/log/le-renew.log

ファイルを保存して閉じます。有効にするには、証明書が更新された場合にApacheが自動的に再起動されます。

更新プロセスをテストできます。certbotコマンドに続けて–dry-runスイッチを使用できます:

$ sudo certbot renew --dry-run

エラーがない場合は、更新プロセスが成功したことを意味します。


[Apache構成エラーの修正に緊急の支援が必要ですか?我々はあなたを助けることができる。 ]


Cent OS
  1. CentOS 7にNginxを使用してphpMyAdminをインストールします-ステップバイステップのプロセス?

  2. CentOS 7にApacheを使用してphpMyAdminをインストールします-ステップバイステップのプロセス?

  3. CentOS7にApacheでLet'sEncryptをインストールする方法

  1. Ubuntu20.04でLetsEncryptを使用してApacheを保護する

  2. CentOS7でLetsEncryptを使用してNginxを保護する

  3. CentOS7でLetsEncryptを使用してApacheを保護する

  1. CentOS8でLetsEncryptを使用してApacheを保護する

  2. Debian10でLetsEncryptを使用してApacheを保護する

  3. ApacheでWonderCMSをインストールし、CentOS8でSSLを暗号化する方法