Все на https, безопасно и дешево

    Краткое введение


    В наши дни все понимают насколько простой задачей является угон незащищенной http сессии.
    И останавливать от повсеместного внедрения может только цена на покупку сертификата, www.startssl.com решает эту проблему, раздавая бесплатные сертификаты (Class 1). Verified (Class 2) стоят копейки.

    Редирект


    Когда сертификат куплен и программное обеспечение настроено, становится очевидна необходимость редиректа пользователя с http:// мойсайт.ру на https:// мойсайт.ру.

    Подобный редирект создает небольшую дыру в безопасности, атака может быть совершена до редиректа. Поэтому необходимо использовать атрибут 'Secure', который говорит браузеру что куки могут быть отправлены только через https и желательно избежать редиректа указав ссылки с https и используя следующие техники:

    Спецификация HTTP/1.1 говорит что http responsе коды 301 («moved permanently») и 302 («found»/«moved temporarily») могут быть закешированы браузером.

    Поэтому использование заголовков Expires или Cache-Control max-age с большими сроками сделает редиректы более безопасными. Очевидной проблемой является отсутствие уважения к спецификациям со стороны разработчиков некоторых браузеров.

    Вторым вариантом является использование заголовка Strict-Transport-Security.
    Посредством этого заголовка Вы информируете браузер о том что вебсайт будет доступен только через https. http запросы будут переписаны на стороне клиента браузером.

    Strict-Transport-Security: max-age=31556926;
    Говорит браузеру, который поддерживает черновой стандарт что 1 год сайт доступен только через https. (Firefox и Chrome уже поддерживают, Opera ожидает переход его статуса в agreed или established).

    Не смешивайте контент


    Вам необходимо убедится что Вы не загружаете контент с http сайтов. Часто люди забывают что они загружают библиотеки из CDN или не переключают Google аналитику в https режим.

    Дополнительная информация


    Подробная статья о получении сертификатов на startssl habrahabr.ru/post/127643
    en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
    en.wikipedia.org/wiki/List_of_HTTP_status_codes
    en.wikipedia.org/wiki/HTTP_cookie#Secure_cookie
    Пример крупной платформы использующей startssl cartenergy.ru (создают интернет-магазины)
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 52

      +2
      Для редиректа правильнее использовать не 301 и 302, а HTTP 303.
        +2
        Если у приложения новый URI то 303 предпочтительнее. Но идея во фразе «http responsе коды 301 и 302 могут быть закешированы браузером.»
          +1
          Я вам про это и пишу. По-правилам, согласно RFC-2616, «The 303 response MUST NOT be cached, but the response to the second (redirected) request might be cacheable.» Вопрос не в том, что предпочтительнее, а в том, что проблема кеширования возникает из-за неправильно выбранного заголовка.
            0
            Я понимаю что 303 код не должен кешироваться. А 301 в свою очередь кешируется по умолчанию.

            Смысл в том что разные коды задают разное поведение и в зависимости от него Вы выбираете код.
            Редирект бывает по разным причинам и поэтому у нас несколько кодов для редиректа.

            Данная статья не разъясняет когда необходимо использовать какие коды.
            Но все ровно спасибо что Вы на страже.
        0
        Кстати, по причине кешировния (избегаем постоянного редиректа) google developers гид рекомендует использовать именно 301 и 302.
          0
          Google Developers Guide — это рекомендации вендора, которые не всегда отражают правильную политику взаимодействия приложений. Крупные вендоры всегда стараются оптимизировать свои сервисы в обход стандартам.
          0
          А если ставить cookies https only? И делать редирект?
            0
            Да, я забыл об этом написать. Без атрибута 'Secure' браузер с запросом отправит куки до редиректа.

            Но все ровно 301 или 302 с Expires или Cache-Control max-age избавит от частого редиректа и повысит безопасность.
              0
              Не написал как повышается безопасность без ридиректа в случае «cookies https only? И делать редирект? „

              Если Вы оставляете постоянный редирект, то в случае взлома преступник может сделать ридирект на свой https сайт (который выглядит как Ваш) и попросит пользователя залогиниться снова, а с этими данными отправит пользователя на реальный сайт (http://en.wikipedia.org/wiki/Man-in-the-middle_attack).
            • UFO just landed and posted this here
                0
                Анонс полностью соответствует. Вы можете получить (Class 1) сертификат у www.startssl.com бесплатно. Я их использую в своей работе. Если деньги для Вас не проблема то Вам вероятно проще купить.
                • UFO just landed and posted this here
                    0
                    Попробуйте еще раз, у меня процедура занимает максимум 30 минут. И все выглядит очень тривиально.
                    Если у Вас возникнут проблемы, то я берусь описать процесс получения сертификата!
                      +3
                      Получил около года назад за 15 минут сертификат у них бесплатный. Всё ОК.
                        0
                        Кстати, может кто уточнит… Насчёт сертификатов второго и выше уровней. Там какая-то странная система «за проверку данных деньги берём, за сами сертификаты — нет». Так вот, мне интересно — один раз оплатил проверку данных — и у тебя пожизненно безлимитное количество сертификатов нужного уровня, или же за проверку нужно как-то платить регулярно?
                          0
                          Из startssl FAQ «Identity and organization validations are valid for 350 days. After the validation period expires they must be re-validated exactly the same way as the first time.»

                          Но пока он валиден для данной оргазации Вы можете оформлять любой количество сертификатов для валидированных доменных имен.
                            0
                            Спасибо. Значит ежегодное продление айдентити… Ясненько.

                            Хотя всё равно щедро, да.
                            0
                            Надо регулярно (раз в год) переподтверждать данные. И да, вполне реально получить сертификат с детальными данными персонального уровня минут за 30.
                          +3
                          Статья по получению сертификатов уже есть. Если что не понятно — спрашивайте, сам не раз сертификат получал.
                            0
                            Спасибо, добавил в дополнительную информацию.
                            0
                            Ым. Вообще они няшки за то, что wildcard у них за 49 долларов в год добывается. В смысле, сколько угодно wildcard.

                            Но есть проблема — чтобы вы получили у них сертификат — домен должен быть зарегистрирован на вас или на Private Person (и не поможет то, что вы можете с доменом что угодно сделать). На зарегистрированные другими лицами домены я пока не пробовал заявки делать, но вот с доменами юр. лиц — точно fail.
                            • UFO just landed and posted this here
                                0
                                Вы можете заказать любое количество сертификатов (в том числе и с wildcard) для любого количества своих доменов. Можете и в один сертификат их сложить все.

                                Например, у вас есть site1.domain.tld, domain2.tld и {site1,site2,site3}.domain3.tld
                                Вы можете взять сертификат:
                                1) *.{domain,domain2,domain3}.tld + {domain,domain2,domain3}.tld
                                2) site1.domain.tld+domain.tld, domain2.tld, {site1,site2,site3}.domain3.tld+domain3.tld
                                Либо всё тоже самое отдельными сертификатами.

                                Стоит также иметь в виду, что если вы сертификат для субдомена третьего уровня, то вам нужно проходить проверку для домена второго уровня (т.е. для site1.domain.tld нужно проходить проверку для domain.tld). И сертификат будет выдан не просто на site1.domain.tld, а на site1.domain.tld+domain.tld (для tld второго уровня смещение работает, соответственно, если это общепризнанные tld, как org.ru).

                                В случае с «три десятка небольших сайтов» -у вас могут возникнуть проблемы, если домены сайтов зарегистрированы не на вас (или не закрыты Private Person).
                                • UFO just landed and posted this here
                                    0
                                    www.thawte.com/ssl/index.html Смотреть в «Add Subject Alternative Names (SAN)»
                                    • UFO just landed and posted this here
                                        0
                                        Ну простите, тега сарказм на хабре так и не ввели =)
                                      +1
                                      «SNI работает не везде и не всегда»
                                      Пользователи IE6 и операционной системы 10-летней давности будут конечно очень недовольны.
                                      • UFO just landed and posted this here
                                    0
                                    А, ну и, само собой, всё это за 49 баксов.

                                    При том можно хитрить. Сертификаты дают на 2 года (оплатили год, заказали серты, пропустили год, оплатили год, заказали новые). Но они таких клиентов не любят и скрупулезно проверяют их домены при заказе сертификатов на второй год. В таком случае могут попросить снять Private Person.
                          • UFO just landed and posted this here
                            • UFO just landed and posted this here
                                0
                                Естественно. Валидация заключается в подтверждении владения\управления доменом. Фактически высылают код на один из служебных email домена (postmaster,etc) либо на email из whois.

                              • UFO just landed and posted this here
                                • UFO just landed and posted this here
                                  • UFO just landed and posted this here
                                    • UFO just landed and posted this here
                                        0
                                        И кстати, что меня изрядно повеселило, для этого нужно пользоваться FF, Хром не катит. Ну или не катил, когда я получал.
                                          +2
                                          Хром не умеет генерировать сертификаты на лету.
                                          Сгенерированный в FF сертификат спокойно импортируется в файл, а из файла экспортируется в Chrome/Iron. А дальше уже спокойно можно из него работать.
                                          С Webmoney Light тоже самое, к слову.
                                  0
                                  Выписал на старттлс сертификат ещё в том году, всё окейно работает.
                                  Хотя, действительно, на процедуру получения ключей я потратил времени больше, чем на настройку собственно сервера.
                                    +1
                                    я правильно понимаю, что www.startssl.com даст сертификат, который можно прикрутить к апачу и сделать правильный https?
                                      0
                                      Хоть к апачу, хоть к чему. Он абсолютно валиден, просто он подтверждает аутентичность ресурса, и никак не подтверждает личность его владельцев.
                                      0
                                      А на индексирование поисковиками это не влияет ли негативно?
                                        0
                                        У меня сделано через редирект на 301, все нормально индексируется.
                                        +3
                                        Можно еще добавить «includeSubdomains». Пример для nginx:
                                        add_header Strict-Transport-Security "max-age=315360000; includeSubdomains";
                                          0
                                          Я вот не могу понять, почему ВКонтакте на HTTPS не переходит? Неужели это так ресурсоемко?
                                            +2
                                            Да, шифровать видео и картинки в https — дорого (в сравнении с тупой отдачей по http).

                                            На больших страничках (от сотни мегабайт) можно на глаз заметить сильно возрастающую нагрузку на CPU при включении https. На страницах по 2-10 мегабайт, само собой, этого никто не заметит.

                                            Если размышлять без определенных цифр — то, например, средняя нагрузка на CPU вырастет в 2 раза. Если у них сейчас CPU нагружены на 40% — то станет 80%. А после 50% затраты на электричество и охлаждение сервера идут уже по экспоненте. При нагрузке в 100% сервер сожрет свою стоимость охлаждением и питанием за полгода, при нагрузке в 30-40% — за 2 года.

                                            В общем-то, я давно уже не считал подобные штуки для современных машинок (им питания поменьше надо), но динамика осталась той же. Последний раз для Xeon 53xx считал.

                                            Так что им либо много железок ставить, либо вбухивать денег за электричество. Это при условии, что их ДЦ при таком росте нагрузке не потухнут от недостатка питания =)

                                            Ну и не стоит забывать про p2p видео у них — там https вообще слабо представляется.
                                              0
                                              Ну а если их не шифровать? Если шифровать только content-type text/*? Браузеры будут ругаться мол «страница содержит незащищенные элементы», это можно как-то подавить? Ну там заголовками какими-нибудь?
                                              P2P видео разве по HTTP передается? Оно вроде бы по UPD шлепается по своему протоколу, так что это проблемы, вроде бы, не составляет.
                                              Написал Цыплухину в твиттер, может ответит. twitter.com/TheMengzor/status/210482892726484994
                                                0
                                                Нет, нельзя. Браузеры не обманешь.
                                                0
                                                или ставить специальное железо специально для SSL offload?
                                              0
                                              Я просто оставлю это здесь:
                                              image

                                            Only users with full accounts can post comments. Log in, please.