LINUX.ORG.RU

Про HTTPS

 


5

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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.