Назад | Перейти на главную страницу

Let's Encrypt wildcard сертификаты и Apache 2 не работает

Я пытаюсь настроить подстановочный сертификат с помощью Let's Encrypt на сервере Ubuntu 18.04, на котором запущен apache2, для домена abc.def.com (не настоящего доменного имени) и всех поддоменов (* .abc.def.com)

Мне удалось создать сертификат вручную, используя следующую команду:

certbot certonly --manual -d abc.def.com -d *.abc.def.com

Я следовал инструкциям, создал запись TXT для домена abc.def.com и т. Д. И получил подтверждение, что сертификат был успешно создан и сохранен в / etc / letsencrypt / live /

Я изменил /etc/apache2/sites-enabled/001-abcsite-le-ssl.conf сайта, чтобы он ссылался на новые сертификаты в / etc / letsencrypt / live следующим образом:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName abc.def.com

        ServerAdmin webmaster@def.com
        DocumentRoot /var/www/abc

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLCertificateFile /etc/letsencrypt/live/abc.def.net-0001/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/abc.def.net-0001/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Я перезапустил apache2 и подтвердил, что ошибок нет.

service apache2 restart

Теперь, когда я пытаюсь получить доступ https://abc.def.com Я получаю сообщение об ошибке SSL_ERROR_BAD_CERT_DOMAIN, в котором говорится: «Этот сертификат действителен только для * .abc.def.com».

Я не понимаю, почему, поскольку я включил параметры для abc.def.com и * .abc.def.com в запрос certbot.

Затем я попытался включить ранее сгенерированный мной сертификат без подстановочных знаков, который применяется только к abc.def.com, в качестве другого набора директив SSLCertificateFile и SSLCertificateKeyFile в файле конфигурации VirtualHost, но это не имеет никакого значения.

Что я делаю не так?

ОБНОВИТЬ: Я смог заставить его работать, используя оба сертификата, настроив два раздела VirtualHost следующим образом. Но что-то не так с сертификатом с подстановочными знаками, если он также не охватывает корневое имя, верно?

<VirtualHost *:443>
    ServerName abc.def.com
    ServerAdmin webmaster@def.com
    DocumentRoot /var/www/abc
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLCertificateFile /etc/letsencrypt/live/abc.def.net/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/abc.def.net/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

<VirtualHost *:443>
    ServerName localhost.abc.def.com
    ServerAlias *.abc.def.com
    ServerAdmin webmaster@def.com
    DocumentRoot /var/www/abc
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLCertificateFile /etc/letsencrypt/live/abc.def.net-0001/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/abc.def.net-0001/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

Это не похоже на правильный способ использования -d: так должно быть -d abc.def.com,*.abc.def.com