Я пытаюсь подготовиться к предстоящему выпуску Chrome "Небезопасный дисплей" v56.
У меня есть веб-сайт: example.com
Я даю каждому клиенту поддомен вне службы: cust1.example.com
, cust2.example.com
, и т.д.
Несколько лет назад я настроил службу для приема www.cust1.example.com
, www.cust2.example.com
и т. д. В первую очередь потому, что клиенты всегда добавляли «www» перед всем. Я хотел убедиться, что они получили свой сайт, а не сообщение «недействительный домен».
Я купил подстановочный SSL-сертификат *.example.com
для освещения сайтов клиентов. Очевидно, это не работает для www.cust1.example.com
и т. д. Большинство моих клиентов не использовали HTTPS, так что это не было проблемой.
Современные браузеры форсируют https, теперь это становится проблемой.
Я пробовал использовать mod_rewrite, чтобы решить эту проблему.
RewriteCond %{HTTP_HOST} ^www\.([^\.]+)\.example\.com$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(.*)$ https://%1.example.com/$1 [R=302,E=nocache:1,L]
Примечание. Я использую 302 при тестировании решения, поэтому я случайно не помещаю перенаправление в кеш браузера и никогда не смогу изменить его снова.
Проблема в том, что когда вы запускаете HTTPS в браузере, перенаправление, предоставленное обратно с сервера, по-прежнему вызывает ошибку ERR_CERT_COMMON_NAME_INVALID, прежде чем оно сможет перенаправить, чтобы удалить «www» и перейти на страницу с действующим сертификатом.
Как удалить префикс "www" в HTTPS-трафике без запуска браузера Не является безопасным ответ?
Это перенаправит www.example.com на https://example.com
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://example.com/$1 [R,QSA,L]