Page 2 of 3

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 10:36 am
by Deeryo
Привет, думаю самый простой выход будет в том SSL сайте, который открывается вместо нужных сайтов, или вообще во всех SSL сайтах добавить вот такие строки в .htaccess:

Code: Select all

<IfModule rewrite_module>
    RewriteCond %{HTTPS} on
    RewriteCond %{HTTP_HOST} !mydomain\.com$
    RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
(Вместо mydomain.com нужно вписать свой домен сайта)

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 11:50 am
by skurudo
Deeryo wrote:Привет, думаю самый простой выход будет в том SSL сайте, который открывается вместо нужных сайтов, или вообще во всех SSL сайтах добавить вот такие строки в .htaccess:
(Вместо mydomain.com нужно вписать свой домен сайта)
Пардон, а код проверяли? А то какой-то он не очень рабочий )

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 12:14 pm
by Deeryo
Да проверил, работает =) Может конкретному сайту не хватет "RewriteEngine On", это зависит от сайта, два раза "RewriteEngine On" пихать в htaccess не стоит.
Логика вообще-то простая, редирект на http делается в случае https и если имя сайта не то, что ожидается.

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 12:43 pm
by skurudo
Deeryo wrote:Да проверил, работает =) Может конкретному сайту не хватет "RewriteEngine On", это зависит от сайта, два раза "RewriteEngine On" пихать в htaccess не стоит.
Да, логика понятная :)
Про реврайт энжин я совсем забыл - отличное решение!

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 1:11 pm
by skurudo
Deeryo wrote:Логика вообще-то простая, редирект на http делается в случае https и если имя сайта не то, что ожидается.
Переписал и для nginx, работает :)

Code: Select all

if ($host !~* "domain.ru") {
rewrite ^ http://$host$request_uri permanent;
    }
/home/admin/conf/web/snginx.conf
(ну или в том конфиге где первый оборотень с ссл)

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 1:48 pm
by Deeryo
Классно, можно подумать даже о шаблоне nginx для ssl

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 2:18 pm
by skurudo
Deeryo wrote:Классно, можно подумать даже о шаблоне nginx для ssl
Ну вообще-то я как бы уже :)

С указанными твиками тестирование сертификата startssl спокойно дает А+
....

/usr/local/vesta/data/templates/web/nginx/hosting.stpl
(ну и другие stpl можно поменять)

Code: Select all

server {
    listen      %ip%:%proxy_ssl_port% ssl spdy;
    server_name %domain_idn% %alias_idn%;
    ssl         on;
    ssl_certificate      %ssl_pem%;
    ssl_certificate_key  %ssl_key%;
    resolver 127.0.0.1;
    ssl_stapling on;
    ssl_session_timeout 24h;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security "max-age=31536000;";
    add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";
    
    error_log  /var/log/%web_system%/domains/%domain%.error.log error;

    location / {
        proxy_pass      https://%ip%:%web_ssl_port%;
        location ~* ^.+\.(%proxy_extentions%)$ {
            root           %sdocroot%;
            access_log     /var/log/%web_system%/domains/%domain%.log combined;
            access_log     /var/log/%web_system%/domains/%domain%.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
    }

    location /error/ {
        alias   %home%/%user%/web/%domain%/document_errors/;
    }

    location @fallback {
        proxy_pass      https://%ip%:%web_ssl_port%;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    disable_symlinks if_not_owner from=%docroot%;

    include %home%/%user%/conf/web/snginx.%domain%.conf*;

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 3:35 pm
by Deeryo
В примере еще не видно редиректа. Кстати, а нам действительно нужно делать proxy_pass на https
proxy_pass https://%ip%:%web_ssl_port%;
или достаточно на http
proxy_pass http://%ip%:%web_port%;

Re: Перепутанные SSL домены

Posted: Mon Mar 23, 2015 4:22 pm
by skurudo
Deeryo wrote:В примере еще не видно редиректа. Кстати, а нам действительно нужно делать proxy_pass на https
Все есть, смотрите прокруткой :)
Основная находка - это все-таки опции ssl

Re: Перепутанные SSL домены

Posted: Tue Mar 24, 2015 1:29 pm
by yorm
skurudo wrote:Deeryo уже писал по этому поводу: viewtopic.php?f=29&t=6663#p19736 Тоже самое было и в ISP. А чтобы понимать, что сейчас сделано - нужно не гадать, а конфиги, которые трогались показывать или же откатить изменения и начать заново.
Те же конфиги, что уже дважды в теме выше этой цитаты.

Так как с конфигами не помогло, откатил и начал заново. Если делать как здесь: viewtopic.php?f=29&t=6663#p19736 — это не помогло сначала. Прикрутил к дефолтному домену SSL, указал сертификаты, Веста их успешно съела. Ничего не меняется, везде по https открывается не тот сайт, который нужно, а к которому первому включал SSL. Даже не дефолтный домен. Может быть дефолтный домен стоит первым в каком-то конфиге http, а есть отдельный конфиг с отдельным порядком сайтов на https? Когда стал проверять эту идею, оказалось, что действительно в /etc/httpd/conf.d/vesta.conf, /etc/nginx/conf.d/vesta.conf порядок нужно проверять дважды для httpd.conf и shttpd. Теперь .htaccess срабатывает.

Проблема теперь только в том, что сервер сначала выдает ошибку о несоответствии сертификата, а уже затем перенаправляет с https на http. Но здесь даже не знаю, возможно ли это вообще исправить, не получая сертификаты на все домены.