Проблема с сертификатом Let's Encrypt: https://www.website.com не работает с перенаправлением на https://website.com - PullRequest
6 голосов
/ 17 февраля 2020

У меня проблема с сертификатом, который я создал для веб-сайта (дублирован здесь website.com).

Я могу набрать в браузере http://www.website.com и успешно перенаправлен на https://website.com, как я хотел ( с сертификатом, сгенерированным let's encrypt). Я сделал это перенаправление с переписать правила с Apache2. Перенаправление на https://website.com также работает нормально, когда я печатаю http://website.com.

. Теперь я сталкиваюсь с проблемой, когда я печатаю прямо в браузере https://wwww.website.com: я получаю следующую ошибку:

enter image description here

Чтобы создать зашифрованный сертификат, я выполнил следующую команду:

./certbot-auto certonly --no-bootstrap --no-self-upgrade --renew-by-default -a standalone -d website.com --rsa-key-size 4096

Я хотел бы сгенерировать сертификат, работающий как для website.com, так и www.website.com: является ли приведенная выше команда с cerbot-auto правильной для этого?

Кажется, что до перехода с Debian 7 на Debian 10 у меня был *.website.com имя в информационном окне сертификата браузера, но я не уверен.

Как набрать https://www.website.com и правильно перенаправить на https://website.com, не имея ошибка, показанная на рисунке выше?

Обновление 1

Достаточно ли одного сертификата для выполнения всех перенаправлений, я имею в виду только один сертификат website.com? Это было в моей предыдущей ОС, я думаю, что у меня был только уникальный сертификат (для website.com).

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

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

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

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

за исключением URL-адрес, содержащий каталог podcast, где я хочу остаться в режиме HTTP.

Итак, с Ref: Apache redirect www to non- www and HTTP на HTTPS , I did:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{REQUEST_URI} !^/podcast [NC]
RewriteRule ^ https://website.com%{REQUEST_URI} [L,NE,R=301]

Являются ли эти правила перезаписи верными?

К сожалению, если я наберу напрямую https://www.website.com, я не перенаправлюсь на https://website.com и окно предупреждения на рисунке выше Похоже, я не знаю, что делать.

Обновление 2

1) Предлагает ли Let's Encrypt возможность генерировать сертификат «подстановочные знаки»? в форме *.website.com, когда мы смотрим на сертификат в браузерах.

2) Более того, кто-нибудь знает, как выполнить с правилами apache2 Rewrite правило, позволяющее перенаправить https://www.website.com до https://website.com.

Чтобы получить больше информации, я начинаю ловить ти. В конце награды я говорю о том, что нужно сделать, чтобы сделать перенаправление с https://www.website.com на https://website.com (эти URL замаскированы в премию под тем же тегом href, но они разные).

Обновление 3

Спасибо за ваши ответы. Я думаю, что моя проблема не в сертификатах с подстановочными знаками, так как я просто хочу перенаправление с https://www.website.com на https://website.com ( не принимайте во внимание ОБНОВЛЕНИЕ 2 выше . Конечно, должно быть достаточно простого правила перезаписи. До моей текущей ОС (Debian 10) я хорошо запускал все свои конфигурационные файлы, которые я сейчас пытаюсь использовать снова. В частности, я использовал только один сертификат, сгенерированный с опцией "-d website.com" (я не использовал второй домен "www.website.com").

Я собираюсь попытаться изменить эти правила перезаписи, чтобы получить это перенаправление без необходимости генерировать www.website.com файлы сертификатов.

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

LetsEncrypt предлагает подстановочные сертификаты для выполнения *.website.com, однако они могут быть выданы только при вызовах уровня DNS-01.

Вы используете проверку HTTP, где указанный файл c загружен в подтвердите право собственности, однако этого недостаточно для доказательства владения целым доменом.

Certbot имеет ограниченную поддержку для возможности выдавать сертификаты с подстановочными знаками автоматически, но этот может быть вам полезен, если вы перейдете к разделу с подстановочными знаками. Это ограничено с точки зрения того, какой OS + Сервер + DNS-провайдер у вас есть. По сути, вам нужно иметь возможность автоматически создавать и изменять записи TXT DNS с вашим регистратором.

Я обнаружил, что использование проекта acme. sh для выдачи групповых сертификатов - это гораздо больше. гибкий и работает с большим количеством провайдеров DNS, хотя это немного больше ручного процесса.

Если ваш основной провайдер DNS для вашего домена не поддерживается, вы можете заглянуть в «режим псевдонима», где вы можете использовать субдомен или другой домен другого DNS-провайдера, который поддерживается в качестве прокси-домена для проверки того, что вы являетесь владельцем основного домена.

1 голос
/ 27 февраля 2020

Вы можете попробовать запустить это незначительное обновление для вашей оригинальной команды certbot-auto, чтобы получить в вашем сертификате дополнительное доменное имя www.website.com (я полагаю, именно об этом говорил Джон Хэнли в своем комментарии к вашему первоначальному вопросу). обратите внимание, что, согласно одному источнику (ссылка сообщества letsencrypt ниже), вам может потребоваться удалить правила перезаписи URL, если они у вас уже установлены, прежде чем процесс сертификации будет работать. (если вы запустите команду и получите сообщение об ошибке, возможно, именно поэтому)

./certbot-auto certonly --no-bootstrap --no-self-upgrade --renew-by-default -a standalone -d website.com -d www.website.com --rsa-key-size 4096

ссылки, которые могут быть полезны:

ссылка на параметр команды для certbot (man-страница) https://certbot.eff.org/docs/man/certbot.html?highlight=bootstrap

Обсуждение сообществом letsencrypt добавления нового домена https://community.letsencrypt.org/t/add-a-domain-using-certbot-auto/33660

Документация letsencrypt для обновления существующего сертификата https://certbot.eff.org/docs/using.html#re -создание- и-update-существующие-Certificates примечание, согласно man-странице, --renew-по-умолчанию подразумевает --expand, который используется в этих примерах (--expand просто не дает вам возможности ответить, являетесь ли вы преднамеренное обновление существующего сертификата)

Я думаю, что ваше правило перезаписи выглядит в основном так, как оно есть, как уже упоминалось, его может потребоваться временно удалить, чтобы сгенерировать сертификат. И перед этими правилами вам может понадобиться «RewriteEngine On»:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{REQUEST_URI} !^/podcast [NC]
RewriteRule ^ https://website.com%{REQUEST_URI} [L,NE,R=301]

А к вопросу о подстановочных сертификатах они поддерживаются, но только с помощью дополнительных плагинов. Подробнее здесь: https://certbot.eff.org/docs/using.html?highlight=wildcard#id14

...