LINUX.ORG.RU

Про HTTPS

 


4

3

Здравствуйте.

Сегодня от гугла пришло письмо «счастья» с сообщением о понижении сайта ввиду отсутствия SSL-сертификата.

Естественно хочется бесплатно - кто-что посоветует и чем пользуется сам? Вроде как «Let's Encrypt» рекламируют.

И второй вопрос, который тяготит меня: если стоит связка nginx + apache, то настраивать нужно оба сервера или только nginx, который находится на «передовой»?

★

Настроить нужно то, что торчит наружу. В вашем случае это nginx.

StartSSL дают бесплатно. Тот же Let's Encrypt вполне удобный.

Сам использую cloudflare.com. Потому что очень просто. Но там не полностью безопасный SSL.

lexazloy ★
()

Сегодня от гугла пришло письмо «счастья» с сообщением о понижении сайта ввиду отсутствия SSL-сертификата.
Естественно хочется бесплатно - кто-что посоветует и чем пользуется сам?

Пользуюсь игнором подобных писем. Только массовый игнор гуглехотелок может задавить 10¹⁰⁰ единиц ЧСВ корпорации бабла, пытающейся прогнуть интернеты под себя вместо прогибания под интернеты.

h578b1bde ★☆
()
Ответ на: комментарий от h578b1bde

Чем плох HTTPS? Тесты показывают, что даже на скорость загрузки страницы оно не влияет негативным образом на самом деле, ибо хоть и приходится заниматься шифрованием, зато само сетевое соединение происходит более оптимальным образом.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

Чем плох HTTPS?

Как минимум тем что впаривается насильно, например. А ещё он очень хрупок, его работоспособность (читай подконтрольность) слабо зависит от владельца сертификата и сильно от правильных установок времени на устройстве клиента, кривизны рук чужих дядь и погоды на Марсе.

h578b1bde ★☆
()
Ответ на: комментарий от MadDeer

Вопросов возникает всё больше и больше.

Вот у меня стоит nginx, а за ним прячется апачь. Делаю сертификат для nginx, а что дальше? Нужно вобще закрыть 80-ый порт и оставить только 443-й или оставить оба? Если оба, то что скажет гугол?

И что делать с настройками nginx типа - if ($http_user_agent ~* LWP::Simple|BBBike|curl|... ?

stD ★
() автор топика
Ответ на: комментарий от stD

Нужно вобще закрыть 80-ый порт и оставить только 443-й или оставить оба?

ЕМНИП, оставить оба и настроить правильный редирект с http на https, у меня так сделано.

Twissel ★★★★★
()
Ответ на: комментарий от stD

Вот у меня стоит nginx, а за ним прячется апачь. Делаю сертификат для nginx, а что дальше? Нужно вобще закрыть 80-ый порт и оставить только 443-й или оставить оба?

сделай перенаправление на https

server {
    listen 80;
    listen [::]:80;
        server_name name.ru www.name.ru;
        rewrite     ^ https://$server_name$request_uri? permanent;
}
Wind ★★★
()
Последнее исправление: Wind (всего исправлений: 1)
Ответ на: комментарий от Wind

сделай перенаправление на https

И всё, так просто. Спасибо большое.

А вот с этими штуками...

if ($http_user_agent ~* LWP::Simple|BBBike|curl|

...что делать?

Дополнительно прописывать - $https_user_agent?

stD ★
() автор топика
Ответ на: комментарий от stD

А вот с этими штуками...

Затрудняюсь с ответом ибо не настолько хорошо знаю nginx. По идее нет, но пусть более опытные товарищи меня поправят.

Wind ★★★
()
Ответ на: комментарий от stD

Думаю добавление тега nginx в тему не помешает.

Wind ★★★
()
Ответ на: комментарий от Goury

говно мамонта пусть юзеры сами обновлять научатся.

Я почти понял, что Вы хотели сказать, но можно чуть больше контекста, плиз...

stD ★
() автор топика
Ответ на: комментарий от stD

Дополнительно прописывать - $https_user_agent?

Нет, оставить «$http_user_agent».

Это динамические переменные, они строятся из префикса «http_» и имени поля заголовка. В данном случае это «User-Agent» → «http_» + «user_agent». Префикс всегда одинаковый, вне зависимости от того, навешивается ли TLS на соединение.

i-rinat ★★★★★
()
Ответ на: комментарий от Goury

Поскольку из-за мата твой предыдущий багет модераторы потрут, то отвечу сюда. Расскажи, пожалуйста, зачем мне нужно осиливать https.

h578b1bde ★☆
()
Ответ на: комментарий от Goury

Ничего не делать, говно мамонта пусть юзеры сами обновлять научатся.

Но ведь это не овечье дело.

h578b1bde ★☆
()
Ответ на: комментарий от Harald

это обычно слишком сложно для них

Так это для обычных хипсторов, а здесь элитные.

h578b1bde ★☆
()
Ответ на: комментарий от stD

Эта херовина нужна для того, чтобы определённым юзерагентам отдавать что-нибудь специально подготовленное для них. Это порочная практика. Лучше вместо этого просто отдавать нормальный сайт, а на тех, кто не может прожевать нормальный сайт — забить. Ибо это их проблемы, а не твои.

Goury ★★★★★
()
Ответ на: комментарий от Goury

Эта херовина нужна

Благодарствую за ответы. Если Вы про это...

if ($http_user_agent ~* LWP::Simple|BBBike|curl|msnbot|scrapbot|nmap|...) { return 444; }

...то я таким образом отгоняю от себя curl и т.д. Или я ошибаюсь в том, что делает эта функция. Поясните пожалуйста, почему эта практика порочна? Прошу, не отвечайте односложно и не пользуйтесь метафорами, а то я совсем запутался. Хочется ведь разобраться.

stD ★
() автор топика
Ответ на: комментарий от ritsufag

Всем откликнувшимся безмерная благодарность. Всё заработало, SSL Server Test присваивает уровень В.

stD ★
() автор топика
Ответ на: комментарий от stD

SSL Server Test присваивает уровень В

Можно настроить уровень А, например по этому руководству. Я сделал себе облегчённый вариант с ключом 2048 бит.

Wind ★★★
()
Ответ на: комментарий от Wind

Получил А+, однако пишет - «HTTP Strict Transport Security (HSTS) with long duration deployed on this server»

Видимо надо уменьшить это значение:

add_header Strict-Transport-Security max-age=15768000;

...

Скажите, а зачем нужна директива resolver, что она делает?

stD ★
() автор топика

Раньше юзал WoSign, теперь — Let's Encrypt. Альтернатив по сути и нет, StartSSL какой-то мутный.

Сегодня от гугла пришло письмо «счастья» с сообщением о понижении сайта ввиду отсутствия SSL-сертификата

Хехе, забавно. С одной стороны, дело хорошее — почему бы не использовать сертификат, бесплатно же. Но с другой... зачем SSL, к примеру, на статическом сайте, сгенерированным Jekyll, например?

the_electric_hand ★★
()
Ответ на: комментарий от stD

Ещё обратил внимание на то, что везде пишут «ssl on;», что конечно же логично, но вот в Mozilla SSL Configuration Generator https://mozilla.github.io/server-side-tls/ssl-config-generator/ это не указано. Я у себя закомментил «ssl on;» и все работает. Наверно по умолчанию включается, когда объявляется «listen 443 ssl spdy;».

stD ★
() автор топика
Ответ на: комментарий от stD

Strict-Transport-Security

Говорит браузеру что надо загружать сайт только по HTTPS в течении указанного времени. Поскольку вы используете nginx в связке с apache думаю надо изменять конфиг и там и там. Но опять же я не специалист и могу быть не прав.

У меня add_header Strict-Transport-Security "max-age=31536000"; то есть срок действия год

Скажите, а зачем нужна директива resolver, что она делает?

https://nginx.org/ru/docs/http/ngx_http_core_module.html#resolver

Wind ★★★
()
Ответ на: комментарий от Wind

Скажите, а зачем нужна директива resolver, что она делает?

https://nginx.org/ru/docs/http/ngx_http_core_module.html#resolver

Это я прочитал, я не совсем понимаю - «Задаёт серверы DNS, используемые для преобразования имён вышестоящих серверов».

Что за вышестоящие сервера?

stD ★
() автор топика
Ответ на: комментарий от stD

Что за вышестоящие сервера?

https://ru.wikipedia.org/wiki/DNS Проще говоря сервера которые определяют по IP имя хоста и наоборот. P.S. Вышестоящие это корневые сервера, которые управляют доменными именами.

Wind ★★★
()
Последнее исправление: Wind (всего исправлений: 1)
Ответ на: комментарий от stD

что делать с настройками nginx типа - if ($http_user_agent ~* LWP::Simple|BBBike|curl|... ?

Убейся, ибо это никого не чешит. Какая тебе разница с каким UA (который ещё подделать, как 2 пальца об асвальт) к тебе пришёл клиент/бот/whatever?

beastie ★★★★★
()
Ответ на: комментарий от Wind

$host берёт из «Host:» шапки. $server_name — из астрала (ЕМНИП первый или последний из указанных в server_name). В общем случае тебе надо перекинуть в тоже же место, но с https — т.е. используя $host.

return более лёгкий, т.к. не дёргает regexp engine. (Этот синтакс достепен с версии 0.8.42).

beastie ★★★★★
()
Ответ на: комментарий от stD

ssl on — это старый синтакс.

В совремненном виде:

listen    *:443 ssl http2;
listen [::]:443 ssl http2;

PS: беда всех how-to-шек по лялиху и смежному — в том, что они все безбожно утарели, но всё равно перепечатываются и популируются макаками. Читайте первоисточники.

beastie ★★★★★
()
Ответ на: комментарий от Wind

За долгую практику я осел на таком варианте:

// simply redirect anything to https
server {
        listen    *:80 default_server;
        listen [::]:80 default_server;
        server_name    .example.org;
        return 301 https://$host$request_uri;
}

// catch any non www. requests and redirect them to www.
server {
        listen    *:443 default_server ssl http2;
        listen [::]:443 default_server ssl http2;
        server_name     .example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        return 301 $scheme://www.example.org$request_uri;
}

// main config, explicit host name, actual host config goes here
server {
        listen    *:443 ssl http2;
        listen [::]:443 ssl http2;
        server_name     www.example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        // ...
}

Преимущество: простой, внятный и быстый конфиг главного блока, куда попадают 99.99% пользователей.

Недостаток: слоупоки, приходящие на 80, могут получить до двух 301 (http → https, non-www → www) — но это не так важно, т.к. таких от силы 0.01%.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 3)
Ответ на: комментарий от the_electric_hand

Но с другой... зачем SSL, к примеру, на статическом сайте, сгенерированным Jekyll, например?

И я о том же. Вместо того чтобы использовать инструменты по назначению бобры пытаются принудить всех и на бактерии смотреть, и гвозди забивать одним и тем же микроскопом.

h578b1bde ★☆
()
Ответ на: комментарий от Wind

Проще говоря сервера которые определяют по IP имя хоста и наоборот

Ещё раз спасибо за терпеливые ответы. Что такое ДНС я знаю, мне не понятно что конкретно делает эта директива? Какие адреса она будет запрашивать. То есть человек зашёл ко мне - зачем ему может понадобиться адрес днс-сервера?

stD ★
() автор топика
Ответ на: комментарий от h578b1bde

ssl должен быть у хоста, на котором размещена статика, а не у самой статики. про спуфинг паролей и прочие радости с которыми призван бороться ссл никто и не упомянул.

anonymous
()
Ответ на: комментарий от anonymous

про спуфинг паролей и прочие радости с которыми призван бороться ссл никто и не упомянул.

Потому что это именно та проблема, для решения которой и был придуман HTTPS. Но это ещё не значит что его обязательно нужно впихнуть в каждый васянский бложик и сборник кулинарных рецептов. Нет никакого смысла в шифровании публичной информации, а те проблемы, которые путём шифрования при передаче общедоступной информации пытаются решить его поборники, должны решаться на совершенно ином уровне.

h578b1bde ★☆
()
Ответ на: комментарий от anonymous

Чтобы большой брат не видел, какие именно страницы ты смотришь?

Большой брат узнает это и с HTTPS после выдачи логов Макскомом.

h578b1bde ★☆
()
Ответ на: комментарий от the_electric_hand

Но с другой... зачем SSL, к примеру, на статическом сайте, сгенерированным Jekyll, например?

Чтобы ты не смог свалить всё на митм когда нотариус будет заверять скриншот твоего сайта.

Внезапно ssl - это не только шифрование. Но в книжке «как стать сисадмином за 14 дней» об этом не пишут.

anonymous
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.