ОШИБКА APACHE CERTBOT

ОШИБКА APACHE CERTBOT

Я настраиваю https на локальном сервере Apache с помощью certbot, но получаю следующую ошибку:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for digierp.com
Enabled Apache rewrite module
Waiting for verification...
Challenge failed for domain digierp.com
http-01 challenge for digierp.com
Cleaning up challenges
Some challenges have failed.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: www.example.com
   Type:   connection
   Detail: 110.40.19...: Fetching
   http://example.com/.well-known/acme-challenge/X3IbvKI9gbZu1.........:
   Connection refused

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.

Это мой файл /etc/apache2/sites-available/exapmlee.conf

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

Если я покопаюсь в example.com, то получу следующее

;; ANSWER SECTION:
example.com.        0   IN  A   127.0.0.1

/etc/хосты

127.0.0.1       localhost
127.0.1.1       digierp-Joy

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

127.0.0.1       example.com

Откуда система получает этот IP 110.40.19...?

Есть ли какие-нибудь предложения по поводу указанной выше ошибки?

решение1

Мета: Я исправил ваше форматирование и восстановил #, который на самом деле является необходимой частью синтаксиса /etc/hosts; пожалуйста, щелкните значок ? в окне редактирования и прочтите справку по «коду» (и, возможно, по другим тоже)

Обратите внимание, что www.{something}это не то же самое, что {something}хотя ониможетсопоставлены с тем же адресом(ами?) и хостом(ами?).

Из журнала видно, что вы на самом деле запрашиваете сертификат, digierp.comкоторый в публичном DNS отображается на 110.40.197.199, а также www.digierp.comтот сертификат, который certbot должен был запросить для конфигурации, которую вы как бы показываете, но который, по-видимому, не был опробован, поскольку первая попытка не удалась.

Чтобы получить сертификат от LetsEncrypt с помощью http-01 challenge, ваш сервер должен быть доступен из публичного Интернета по адресу, определенному публичным DNS. LetsEncrypt не может видеть, что находится в вашем локальном каталоге, /etc/hostsа если бы мог, то не доверял бы ему, потому что весь смысл сертификата от публичного CA, такого как LE, заключается в том, чтодругие люди по всему мируможете доверять идентичности вашего сервера.

Есливы контролируете DNS для этого домена, о чем вы не сказали, и ваш пост не отображается, вы можете получить сертификат LE для имени локального сервера, используя вместо этого вызов dns-01; в зависимости от используемого вами провайдера DNS может быть плагин для этого или вам может потребоваться сделать это вручную. Этот сертификат затем может использоваться с клиентами, которые локально сопоставляются [www.]digierp.comс 127.0.0.1 или другим локальным адресом, используя /etc/hosts или что-то подобное.


Чтобы получить сертификат от LE или большинства публичных CA, вы должны «контролировать» публично зарегистрированное доменное имя. На практике это означает либо заплатить за него, либо заставить кого-то (кто платит) предоставить его вам; например, если вы являетесь сотрудником школы, они могут предоставить вам поддомен в своем домене. От нескольких публичных CA вы можете получить сертификат для IP-адреса, но только публично маршрутизируемый и статически назначенный, определенно НЕ для адресов, предназначенных для локального использования, таких как loopback (127.0.0.1 или ::1), rfc1918 или fe80:/16.

За пределами публичных центров сертификации, если вы не работаете в организации, которая управляет «локальным» центром сертификации, как некоторые крупные предприятия и государственные учреждения, вы можете либо просто сгенерировать самоподписанный сертификат, как заметил Falcon, либо, что немного сложнее, настроить свой собственный частный, личный центр сертификации (которому доверяете только вы и никто другой). См. мой список ссылок на вопросы по этой теме, в нескольких стеках, наhttps://stackoverflow.com/questions/69499225/how-to-solve-the-problem-of-self-signed-ssl-certificates-for-sites-intended-to-b.

решение2

Вы пытаетесь получить сертификат от letsencrypt дляwww.example.com? Ты не можешь этого сделать. Это не твое.

Я вижу, что вы делаете несколько разных вещей. Вы запросили у certbot сертификат дляwww.example.comно остальная часть вашего вопроса касается example.com. Это две разные вещи; www вообще не подразумевается. Однако обычно получают сертификат для обоихwww.example.comи example.com,где example.com — ваш домен.

Может быть, ваш домен digierp.com? Вы его где-то отредактировали, а где-то нет.

В остальном вы, как мне кажется, используете инструменты правильно. Но letsencrypt — это не локальный инструмент. Certbot просит letsencrypt подтвердить ваш контроль над доменом с помощью протокола ACME через интернет, а затем выдает вам сертификат. Вы не можете использовать его, когда пытаетесь запустить сервер только на обратной связи.

Чтобы использовать letsencrypt, настройте DNS (а не файл hosts) так, чтобы он указывал на сервер, на котором вы запускаете свой сайт. Если вам нужно провести локальное тестирование, используйте другой инструмент; некоторые люди выпускают самоподписанный сертификат и добавляют его в свое хранилище доверия (или игнорируют предупреждения TLS).

Связанный контент