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

Сертификат SSL, перенаправление, без www сделано правильно (apache)?

МОЯ ЦЕЛЬ

Я хотел бы сделать веб-сайт доступным только через SSL (зашифрованный) и с перенаправлением многих доменов только на один главный домен (без дублирования контента), и все варианты www не должны иметь www.

Веб-сайт размещен на сервере Apache и настроен как виртуальный хост.

Я хотел бы иметь следующие перенаправления:

http://example.com -> https://example.com

http://www.example.com -> https://example.com

https://www.example.com -> https://example.com

http://example.de -> https://example.com

http://www.example.de -> https://example.com

https://example.de -> https://example.com

https://www.example.de -> https://example.com

[...]

ОШИБКА / ПРОБЛЕМА

Моя проблема в том, что определенные запросы (например, https://www.example.de) перенаправляются на https://example.com но например firefox говорит, что соединение небезопасно (SSL_ERROR_BAD_CERT_DOMAIN). Некоторые другие работают.

Моя конфигурация vhost выглядит так:

<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias example.com www.example.de example.de
  RedirectMatch 301 (.*) https://example.com$1
</VirtualHost>

<VirtualHost *:443>
  ServerName www.example.com
  ServerAlias www.example.de example.de
  RedirectMatch 301 (.*) https://example.com$1
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAdmin webmaster@example.com
  DocumentRoot /var/www/example
  <Directory "/var/www/example">
    AllowOverride All
    AuthType Basic
    AuthName "Example.com Temporary Preview"
    AuthUserFile /var/www/users
    Require user example-dev
  </Directory>

  Include /etc/letsencrypt/options-ssl-apache.conf
  SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>

Я использую certbot для проверки доменов и получения ssl-сертификата от letsencrypt вот так:

sudo certbot --authenticator webroot --installer apache certonly

затем выберите все домены (которые установщик apache точно угадает), указав корневой веб-сайт для процесса аутентификации в установщике interactiv cli.

(Перед процессом certbot я использую другую конфигурацию vhost для этого домена, используя только порт 80, чтобы процесс аутентификации работал)

МОЙ ВОПРОС / НЕПРАВИЛЬНОЕ ПОНЯТИЕ

Я понимаю свою конфигурацию apache vhost следующим образом:


  1. Почему браузер в некоторых случаях жалуется, что сертификат недействителен для данного домена?

  2. Есть ли лучший / более простой способ достичь того, чего я хочу? Я неправильно понимаю концепции Apache-Redirections в этом случае (SSL, no-www, letsencrypt)? Мне не хватает какой-то части при использовании certbot команда?

Вы получаете сертификат например.de? Даже если вы выполняете перенаправление 301, браузер сначала запрашивает SSL для домена, который перенаправляется на другой пример домена: https://www.example.de перенаправлен на https://example.com.

Итак, домен (https://www.example.de) также должен иметь действующий SSL, поскольку он сначала запрашивается браузером. Этого не будет, если вы перенаправляете не SSL http://www.example.de к https://example.com.

Поэтому убедитесь, что вы выпустили сертификат SSL для всех доменов SSL. Протестируйте эти домены без перенаправления, а затем выполните свои перенаправления.