Когда Ubuntu 16.04 использует /etc/apache2/ssl/apache.crt?

У меня работает какой-то сервер Ubuntu 16.04 и я настроил один vhost в apache2, который использует (или должен использовать) ssl.

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

        ServerAdmin myemail@mailhoster.xx
        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 ответ

Решение

Согласно некоторым руководствам файлы SSL-сертификатов должны быть размещены в /etc/apache2/ssl/, но они могут быть помещены в другую папку, в зависимости от вашей конфигурации.

Чтобы иметь доступ HTTPS к вашему сайту, вы должны включить SSLEngine и предоставить действительный сертификат SSL.

Для этого вам следует использовать инструмент командной строки OpenSSL для создания собственного сертификата. Затем вам нужно проверить сертификат у любого провайдера, такого как COMODO, StarSSL, у вашего местного провайдера DNS и т. Д. Обычно они предлагают бесплатные сертификаты на несколько месяцев. Относительно этого способа генерации сертификата вы можете посмотреть эти руководства: для 14.04 и 16.04.

Также вы можете использовать программный инструмент Let's Encrypt. Со страницы https://letsencrypt.org/getting-started/:

Чтобы включить HTTPS на вашем веб-сайте, вам необходимо получить сертификат (тип файла) в Центре сертификации (CA). Давайте зашифруем это CA. Чтобы получить сертификат для домена вашего сайта от Let's Encrypt, вы должны продемонстрировать контроль над доменом. С Let's Encrypt вы делаете это с помощью программного обеспечения, которое использует протокол ACME, который обычно работает на вашем веб-хосте.


Я бы предложил вам использовать Let's Encrypt на данном этапе. Итак, начнем.

1-й - установить Let's Encrypt:

sudo apt install python-letsencrypt-apache

2-й - сгенерировать сертификат. Чтобы создать SSL-сертификат, совместимый с Apache, просто введите: letsencrypt --apache, Эта команда запускает интерактивный диалог (где вы должны заполнить личные данные вашего сайта) и генерирует HTTPS.conf файл на основе вашего существующего HTTP.conf файл.

Вы можете использовать и некоторые дополнительные параметры, например letsencrypt --apache certonly будет делать то же, что и выше, но не будет генерировать HTTPS.conf файл.

Также вы можете поставить все необходимые параметры, чтобы избежать диалога. Согласно информации, представленной в вопросе, наша команда должна выглядеть так:

sudo letsencrypt --apache certonly --rsa-key-size 4096 --email myemail@mailhoster.xx -d my.domain.name.de

Предположим, вы выбрали последний подход. Команда сгенерирует все необходимые файлы сертификатов, и они будут помещены в папку /etc/letsencrypt/archive/my.domain.name.de/, Также эти файлы будут символически связаны в папку /etc/letsencrypt/live/my.domain.name.de/, Эти символические ссылки будут автоматически обновляться в будущем, поэтому мы будем их использовать.

3-й - настроить (вручную) ваш HTTPS VirtualHost. В соответствии с вышесказанным файл конфигурации должен выглядеть следующим образом:

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

       ServerAdmin myemail@mailhoster.xx
       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>

4-й - a2ensite новый VirtualHost, на всякий случай a2enmod ssl и перезапустите Apache. Вот и все. Надеюсь теперь у вас будет HTTPS доступ к вашему сайту.

5-е - продли свой сертификат в будущее. Для этого вы можете отредактировать Crontab root и добавить задание, которое попытается letsencrypt renew сертификаты, каждое воскресенье в 3:00, например. Тип 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 что почти то же самое - из Ubuntu Manuals.

  • Если у вас есть несколько виртуальных хостов, вы можете использовать этот синтаксис для генерации их сертификатов (все вместе):

    sudo letsencrypt --apache certonly --rsa-key-size 4096 --email myemail@mailhoster.xx -d my.domain.name-1.de -d my.domain.name-2.de -d my.domain.name-3.de
    
  • https://certbot.eff.org/ - Автоматическое включение HTTPS на вашем сайте с помощью Certbot от EFF, развертывание сертификатов Let's Encrypt.

  • Приведенный выше ответ основан на этом, где предоставлены более подробные сведения о конфигурации VH Apache.


Читайте здесь, как и почему вы должны обновить свой letsecrypt / certbot до 13 февраля 2019 года: не удалось обновить certbot на Ubuntu Bionic

Другие вопросы по тегам