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

Ошибка Let's Encrypt 404 в Google Cloud - Compute Engine - экземпляр виртуальной машины

Я настраиваю свою виртуальную машину Ubuntu 16.04 на Google Compute Engine. У меня установлен Apache, и мой домен уже размещен на HTTP, и я хотел бы включить HTTPS.

Предпринятые шаги:

команды

sudo mkdir -p /var/www/example.com/html
sudo chmod -R 755 /var/www

cd /etc
sudo wget https://dl.eff.org/certbot-auto
sudo chmod a+x certbot-auto
cd /etc/apache2/sites-available
sudo cp 000-default.conf example.com.conf

Новый conf файл имеет это внутри:

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

Я включил новый файл виртуального хоста и перезагрузил

sudo a2ensite example.com.conf
sudo service apache2 reload

На этом этапе я должен быть готов запустить Let's Encrypt

sudo certbot --apache -d example.com

Я получаю следующую ошибку:

IMPORTANT NOTES:
 - The following errors were reported by the server:
   Domain: example.com
   Type:   unauthorized
   Detail: Invalid response from
   http://example.com/.well-known/acme-challenge/MFEvXhKDwEPPKmNM1EyGky1YG9mAvH0e7i0Z_gqsbUc:
   "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
   <html><head>
   <title>404 Not Found</title>
   </head><body>
   <h1>Not Found</h1>
   <p"
   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.

Я могу вручную создать каталог /var/www/example.com/html/.well-known/acme-challenge, и я также могу записывать в него файлы.

Любая помощь приветствуется! Я занимаюсь этой проблемой 2 ночи.

Обновление решения: после ответа @RalfFriedl для создания сертификата SSL, вот шаги для установки этого сертификата:

cd /etc/apache2/sites-available sudo nano example.com.conf

это conf файл будет иметь следующее содержимое:

<VirtualHost *:80> ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/html # always redirect HTTP traffic to HTTPS Redirect permanent / https://example.com/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

sudo nano example.com-https.conf

это conf файл будет иметь следующее содержимое:

<VirtualHost *:443> ServerAdmin admin@example.com DocumentRoot /var/www/example.com/html ServerName example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost>

Let's Encrypt проверяет, что домен принадлежит вам. Для этого он получит файл по URL-адресу вашего домена, в данном случае http://example.com/.well-known/acme-challenge/MFEvXhKDwEPPKmNM1EyGky1YG9mAvH0e7i0Z_gqsbUc. Кажется, certbot не может понять это из вашей конфигурации apache.

Попробуйте вместо этого

sudo certbot --webroot --webroot-path /var/www/example.com/html -d example.com