@minaev007

Как подключить защищенное соединение при помощи letsencrypt?

Запустил проект на Ubuntu 14.04 Apache2 на Django. Не выходит подключить ssl. Сертификат вроде как стоит. Наверно что-то не так в конфигах.
Вот рабочий вариант настроек на http. Здесь все работает:
/etc/apache2/sites-available/000-default.conf:
<VirtualHost *:80>

    ServerName mysite.com.ua
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/myproject/myproject

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /static /var/www/myproject/static
    <Directory /var/www/myproject/static>
        Require all granted
    </Directory>

    <Directory /var/www/myproject/myproject>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess myproject python-path=/var/www/myproject python-home=/var/www/myproject/myprojectenv
    WSGIProcessGroup myproject
    WSGIScriptAlias / /var/www/myproject/myproject/wsgi.py

</VirtualHost>

/etc/apache2/sites-available/default-ssl.conf при этом остается неизменным:
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    </VirtualHost>
</IfModule>

Таким образом ресурс успешно работает через http
Пробую ставить https.
etc/apache2/sites-available/000-default.conf:
<VirtualHost *:80>

    ServerName mysite.com.ua
    Redirect permanent / https://mysite.com.ua

</VirtualHost>

настраиваю /etc/apache2/sites-available/default-ssl.conf:
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName mysite.com.ua
        DocumentRoot /var/www/myproject/myproject
            <Directory /var/www/myproject/myproject>
                AllowOverride All
            </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile /etc/letsencrypt/live/mysite.com.ua/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com.ua/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/mysite.com.ua/chain.pem
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    </VirtualHost>
</IfModule>

И все. Опера пишет сайт не может обеспечить безопасное соединение. Firefox говорит SSL получило запись, длина которой превышает максимально допустимую. Код ошибки: SSL_ERROR_RX_RECORD_TOO_LONG
В одном из руководств, которые все уже перемешались в голове, писали что есть модули, которые не подключены по умолчанию, но их надо поставить:
$ sudo a2enmod expires
$ sudo a2enmod headers
$ sudo a2enmod rewrite
$ sudo a2enmod ssl

С самого начала это сделал. То есть ssl включен.
Подскажите как решить проблему. Заранее благодарен.
  • Вопрос задан
  • 641 просмотр
Пригласить эксперта
Ответы на вопрос 1
че ты делаешь
1. скопируй свой конфиг обычного сайта.
Положи его рядом ну и назови его лялля-ссл
2. Поменяй в нем порт
3. подключи сертификаты по ману, certbot тебе в помощь. https://certbot.eff.org/
4. сертификат выдастся толкьо для домена котрый привязан к серверу.
5. Проверь его на класс сертификата должен быть А+
6. если нет то добавь еще куски конфигов.

Вот тебе пример моего конфига, к сожалению у меня nginx под рукой для апача нет, но на оф сайте certbota расписаны обсалютно все ос и виды установок, следуй ману.

server {
    listen 443 ssl http2;

    server_name site.ru.ru www.site.ru.ru;

  # enable SSL connection
  #include bx/conf/ssl.conf;
 ssl_stapling on;
 ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;
 ssl on;
 keepalive_timeout 70;
 keepalive_requests 150;
 ssl_session_cache shared:SSL:10m;
 ssl_session_timeout 10m;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
 ssl_prefer_server_ciphers on;
 ssl_dhparam /etc/pki/nginx/dhparam.pem;
 ssl_session_cache       shared:SSL:10m;
 ssl_protocols  TLSv1.1 TLSv1.2;
 add_header Strict-Transport-Security "max-age=31536000;";
  #add_header Content-Security-Policy-Report-Only "default-src

Дабы не путаться вообще вынеси конфиг ссл для своего сайта в отдельный файл.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы