このチュートリアルでは、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
次に、証明書ファイルを生成する必要があります。
各コマンドの前に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のインストールで指定したアドレスに電子メールを送信することにより、期限が切れる証明書について自動的に通知します。