web-dev-qa-db-ja.com

Ubuntu 16.04はいつ/etc/Apache2/ssl/Apache.crtを使用しますか?

Ubuntu 16.04サーバーを実行していて、SSLを使用する(または使用する必要がある)Apache2で1つの仮想ホストをセットアップします。

<IfModule mod_ssl.c>
        <VirtualHost *:443>

        ServerAdmin [email protected]
        ServerName my.domain.name.de
        DocumentRoot /var/www/mysslsite

        <Directory /var/www/mysslsite>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${Apache_LOG_DIR}/mysite.ssl.error.log
        CustomLog ${Apache_LOG_DIR}/mysite.ssl.access.log combined

        </VirtualHost>
</IfModule>

私はではなくで標準のsites-available/default-ssl.confを有効にしました。

https://my.domain.name.de を参照できるようになり、Firefoxで証明書を購入しなかった場合に完全に正常な例外を追加するように求めています。

しかし、/ etc/Apache2/ssl /ディレクトリ内の証明書を使用するように設定されている場所が不思議でした。それを使用するように指示されている設定が見つかりません。私はいつも/ etc/sslフォルダーから何かを使用すると考えていました。

または、SSLを正しくアクティブ化できなかったのでしょうか?

1
Andi S.

一部のマニュアルによると、SSL証明書ファイルは/etc/Apache2/ssl/の下に配置する必要がありますが、独自の構成に応じて別のフォルダーに配置できます。

サイトへのHTTPSアクセスを許可するには、SSLEngineを有効にし、有効な SSL証明書 を指定する必要があります。

このためには、 OpenSSL コマンドラインツールを使用して独自の証明書を生成する必要があります。次に、 COMODOStarSSL 、ローカルDNSプロバイダーなどのようなプロバイダーで証明書を検証する必要があります。通常、数か月間無料の証明書を提供します。この証明書の生成方法については、 14.04 および 16.04 のガイドをご覧ください。

また、ソフトウェアツール Let's Encrypt を使用できます。 はじめに暗号化しましょう ページから:

WebサイトでHTTPSを有効にするには、認証局(CA)から証明書(ファイルの一種)を取得する必要があります。 Let's EncryptはCAです。 Let's Encryptからウェブサイトのドメインの証明書を取得するには、ドメインの制御を実証する必要があります。 Let's Encryptでは、通常はWebホストで実行されるACMEプロトコルを使用するソフトウェアを使用してこれを行います。


この段階でLet's Encryptを使用することをお勧めします。それでは始めましょう。

1st-Let's Encryptのインストール:

Sudo apt install python-letsencrypt-Apache

2nd-証明書を生成します。 Apacheと互換性のあるSSL証明書を生成するには、letsencrypt --Apacheと入力するだけです。このコマンドは、対話型の対話を開始し(サイトの個人データを入力する必要があります)、既存のHTTPS.confファイルに基づいてHTTP.confファイルを生成します。

いくつかの追加パラメータを使用できます。たとえば、letsencrypt --Apache certonlyは上記と同じことを行いますが、HTTPS.confファイルは生成しません。

また、ダイアログを回避するために必要なすべてのパラメーターを配置できます。質問で提供される情報によると、コマンドは次のようになります。

Sudo letsencrypt --Apache certonly --rsa-key-size 4096 --email [email protected] -d my.domain.name.de

最後のアプローチを選択したと仮定しましょう。このコマンドは、必要なすべての証明書ファイルを生成し、/etc/letsencrypt/archive/my.domain.name.de/フォルダーに配置されます。また、これらのファイルはフォルダー/etc/letsencrypt/live/my.domain.name.de/にシンボリックリンクされます。これらのシンボリックリンクは将来自動的に更新されるため、使用します。

3rd-HTTPS VirtualHostを(手動で)設定します。上記によると、構成ファイルは次のようになります。

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>

       ServerAdmin [email protected]
       ServerName my.domain.name.de
       DocumentRoot /var/www/mysslsite           

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/my.domain.name.de/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/my.domain.name.de/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/my.domain.name.de/chain.pem

        <Directory /var/www/mysslsite>
            Options FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

        ErrorLog ${Apache_LOG_DIR}/mysite.ssl.error.log
        CustomLog ${Apache_LOG_DIR}/mysite.ssl.access.log combined

    </VirtualHost>
</IfModule>

4th-a2ensite新しいVirtualHost。a2enmod sslの場合に備えて、Apacheを再起動します。それでおしまい。これで、サイトへのHTTPSアクセスが可能になります。

5th-証明書を将来更新します。この目的のために、ルートの Crontab を編集し、証明書をletsencrypt renewしようとするジョブを追加できます(毎週日曜日の午前3時)。 Sudo crontab -eと入力し、この行を下部に追加します。

0 3 * * 0 /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log 2>&1



ノート:

  • letsencrypt/python-letsencrypt-ApacheはUbuntu 16.04以降で使用可能です。以前のバージョンでは、ほぼ同じであるcertbotがあります- buntu Manuals から。

  • VirtualHostがほとんどない場合、この構文を使用して証明書を生成できます(すべて一緒に)。

    Sudo letsencrypt --Apache certonly --rsa-key-size 4096 --email [email protected] -d my.domain.name-1.de -d my.domain.name-2.de -d my.domain.name-3.de
    
  • certbot.eff.org -EFFのCertbotを使用してWebサイトでHTTPSを自動的に有効にし、Let's Encrypt証明書を展開します。

  • 上記の答えは this one に基づいており、ApacheのVH設定の詳細が提供されています。


2019年2月13日までletsecrypt/certbotを更新する方法と理由をこちらでお読みください: buntu Bionicでcertbotをアップグレードできませんでした

4
pa4080