GNU/Linux >> Linux の 問題 >  >> Ubuntu

UbuntuでLetsEncryptSSL証明書を使い始める

このチュートリアルでは、Let'sEncrypt認定を使用したSSLWebサイトの最初の構成について説明します。 Let's Encryptは、無料のSSL証明書を提供する新しいSSL認証局です。 2つの既存のチュートリアル(「Let'sEncrypt証明書を使用して中間互換SSLWebサイトをセットアップする方法」と「ThePerfectServer-Ubuntu 15.10(Wily Werewolf)with Apache、PHP、MySQL、PureFTPD、BIND、Postfix、Dovecot、およびISPConfig 3”)。

ここで説明するセットアップは、Ubuntu LAMPサーバーと互換性があるため、これを基本セットアップとしても使用できます。

このチュートリアルでは、次のISPConfig 3リリース(バージョン3.1)でLet's Encryptサービスが直接実装されるため、ISPConfig3を使用せずにサーバーでLet'sEncryptをセットアップする方法を説明します。したがって、ISPConfigを使用する場合は、3.1リリースと新しいチュートリアルを待ちます。

ウェブサイトの作成

1つのステップは、Webサイトの構成とディレクトリを作成し、SSL(Apache mod_ssl)を有効にすることです。サーバー上の1つのウェブサイトにデフォルト設定を使用する場合、または複数のvhostを使用して複数のドメインをホストする場合は、ユーザー次第です。より信頼性が高くスケーラブルな使用法のために、Azureから「ラボ」ドメインisp1.cloudapp.netの仮想ホスト構成を作成します。

すべてのvhostは、UbuntuおよびDebianではデフォルトで/ etc / apache2/sites-availableディレクトリに保存されます。次のコマンドを実行して、既存の仮想ホスト構成ファイルのリストを取得します。

ls -l /etc/apache2/sites-available/

私の出力は次のようになります:

[email protected]:/home/falco# ls -l /etc/apache2/sites-available/
-rw-r--r-- 1 root root 1332 May 20 2015 000-default.conf
-rw-r--r-- 1 root root 6437 May 20 2015 default-ssl.conf

これで、「デフォルト」の構成ファイルを使用してクローンを作成して編集することも、独自の構成を使用することもできます。長年使用しているので、自分の構成を使用することを好みます。そのため、ファイルを作成して新しい仮想ホストを作成しましょう。

vi /etc/apache2/sites-available/isp1.cloudapp.net.conf

このファイルの貼り付けには、次の内容が含まれています:

<VirtualHost *:80>
ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net

DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combinedScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

</VirtualHost>

<VirtualHost *:443>

ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net
DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combined

ScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html >
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin >
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

SSLEngine on
SSLCertificateFile /home/web/isp1.cloudapp.net /ssl.cert
SSLCertificateKeyFile /home/web/isp1.cloudapp.net /ssl.key
SSLCACertificateFile /home/web/isp1.cloudapp.net /ssl.ca
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

</VirtualHost>

ドメイン名をドメイン名に置き換えて、ファイルを保存します。構成をアクティブ化するには、次を実行します:

a2ensite isp1.cloudapp.net.conf

次に、Webサイトのフォルダーを再作成します。

mkdir /home/web
mkdir /home/web/isp1.cloudapp.net
mkdir /home/web/isp1.cloudapp.net/public_html
mkdir /home/web/isp1.cloudapp.net/cgi-bin
mkdir /home/web/isp1.cloudapp.net/logs

apacheを再起動して、新しい構成を適用します:

sudo service apache2 restart

次に、証明書ファイルを生成する必要があります。

インストールLet'sEncryptを使用して最初のSSL証明書を生成します

各コマンドの前にsudoを実行するのではなく、管理にrootログインを使用することを好むので、rootユーザーにsuしてみましょう:

sudo su

ルートのホームディレクトリに移動します:

cd ~root

Let's Encryptのgitリポジトリファイルをフェッチするためのgitをインストールします:

apt-get install git

次に、Let'sEncryptgitリポジトリのクローンを作成します。

git clone https://github.com/letsencrypt/letsencrypt.git letsencrypt

新しいletsencryptフォルダーに移動します:

cd letsencrypt

そしてSSL証明書をリクエストします:

./letsencrypt-auto certonly --webroot -w /home/web/isp1.cloudapp.net/public_html -d isp1.cloudapp.net

マスタードメイン(1レベルドメイン、別名cloudapp.net)の証明書を要求する場合は、-dパラメーターを2回使用します。このようなwwwプレフィックスがある場合とない場合:

 ./letsencrypt-auto certonly --webroot -w /home/web/cloudapp.net/public_html -d cloudapp.net -d www.cloudapp.net

これを行わないと、wwwプレフィックスを付けてサイトを開く訪問者に対して証明書は無効になります。

1つの証明書に他のサブドメインを追加することもできます。たとえば、サブドメインadmin.cloudapp.netが同じサイト(サーバー上の同じフォルダ)と一致する場合は、それもこの証明書に追加する必要があります。残念ながら、(*。cloudapp.net)のようなワイルドカードをLet'sEncryptで使用することはできません。

Let's Encryptは、すべての依存関係を自動的に更新し、そのセットアップをガイドします。あなたがする必要があるのはあなたの電子メールアドレスを尋ねるプロンプトウィンドウを待つことです。このアドレスは、失われたデータを回復するためにのみ使用されます。

これで、新しいキーがデフォルトで/ etc/letsencrypt/に保存されます。後でキーを管理できるように、それらをWebサイトディレクトリにリンクします。

ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/cert1.pem /home/web/isp1.cloudapp.net/ssl.cert
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/chain1.pem /home/web/isp1.cloudapp.net/ssl.ca
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/privkey1.pem /home/web/isp1.cloudapp.net/ssl.key

これで、SSLを使用してWebサイトにアクセスできるようになります。 Let's Encryptは、Let's Encryptのインストールで指定したアドレスに電子メールを送信することにより、期限が切れる証明書について自動的に通知します。


Ubuntu
  1. Ubuntu16.04でLXDコンテナの使用を開始する

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

  3. acme.sh入門SSLクライアントを暗号化しましょう

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

  2. Ubuntu18.04でSSLを暗号化してApacheSubversionをセットアップする方法

  3. Nginxを使用してNextcloudをインストールし、Ubuntu20.04LTSでSSLを暗号化する方法

  1. Nginxを使用してMagento2をインストールし、Ubuntu20.04LTSでSSLを暗号化する方法

  2. Ubuntu15.10でのWP-CLI入門

  3. Nginxを使用してAutomadCMSをインストールし、Ubuntu18.04でSSLを暗号化できるようにします