Я настраиваю свою виртуальную машину 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>
sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2ensite example.com-https.conf
sudo service apache2 reload
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