Как се прави миграция от HTTP към HTTPS без загуба на трафик

Какво е SSL и необходим ли ни е?
http to https full guide

Какво е SSL и необходим ли ни е?

Преди да започнете една евентуална миграция от HTTP към HTTPS е добре да се запознаете с това какво е самия протокол, да прецените дали Ви е необходим и да извършите предварителна подготовка, за да избегнете многото проблеми, които биха могли да възникнат при една неправилна миграция.

HTTPS iconSSL е съкращение от Secure Socket Layer и на практика е протокол, който криптира връзката между уеб сървъра, на който се намира един сайт и клиентския браузер, който отваря въпросния сайт. Стандартната HTTP връзка е незащитена, тя няма криптиране, трафика между двете машини може лесно да се прихване и разчете по много различни начини докато минава през мрежата между тях.

Ако сайта ви предава съдържание само в едната посока ( сайт към потребител ) или интеракциите между браузер и сайт не включват прехвърляне на лични или поверителни данни, това не е проблем и спокойно можете да минете и без SSL.

Пример е сайта http://www.bbc.com/ – сайта на медийната група на BBC – всеки анонимен потребител може да разглежда и чете новините без да праща данни към сървъра или да използва търсачката на сайта, в който случай данните, които предава и получава са от нищожно значение за евентуалния хакер. Ако реши обаче да използва по персонализирани опции в този сайт, то трябва да се регистрира и влезе в своя профил на сайта (в който случай трябва да попълни форма с някои лични данни, които е добре да си останат лични). Тогава може да се види, че връзката се пренасочва през https протокола на https://session.bbc.com/, което криптира връзката и защитава тези данни.

SSL и Google

От началото на 2017 Google започна да праща предупреждения до всеки потребител използващ техния браузър CHROME за незащитен сайт всеки път, когато той опита до отвори сайт, който има форма, която може да предава такива данни и няма инсталиран криптиращ протокол, които да ги защити. Това е и основната цел на SSL. Той постига няколко неща – криптира данните между сайта и потребителя му, така че да могат да се подслушат, защитава ги от повреждане или модифициране, без то да бъде засечено и удостоверява, че връзката е наистина с въпросния сайт, а не прихваната и пренасочена.

Трябва да се има в предвид, че HTTPS не е магически щит и той не прави сайта по-защитен. DDOS атаки, слабости в софтуера, различни хакове изобщо не се повлияват от него, така че първо подсигурете сигурността му на сървърно ниво. Самият SSL също премина и продължава да преминава през серия рецензии, които отстраняват откривани с времето уязвимости в сигурността му. След версия 3 сертификата беше заменен с TLS (Transport Layer Security), който всъщност се ползва и сега достигайки версия TLS 1.3 за момента. Поради естеството на дейността си термина SSL се използва и за него. Това е и основната причина да се изисква обновяване на инсталирания сертификат през определен срок от време – да се инсталира и премине към следваща и по-защитена версия.

Плюсове и минуси на една миграция към HTTPS

Има няколко плюса за такова прехвърляне:

1. Описната по горе Сигурност на даннитезащита на паролите Ви, лични данни, данни за кредитни карти, финансови операции и други.

2. Поради описаното вече съобщение на Google, потребителите вече на практика изискват такъв сертификат при всеки сайт извършващ онлайн бизнес. Ако вашия сайт е такъв не се чудете изобщо, не можете да го избегнете.

3. Google е приел SSL сертификата за един от критериите си при извършване на класирането на резултатите си, както и като изискване при отчитане на трафика на сайта.

Минусите могат да бъдат също много сериозни, особено ако миграцията не се направи коректно.

1. Намаляване на скоростта на зареждане – криптирането на данните отнема време, макар и минимално – може да се усети най-вече на мобилни устройства. Инсталирането на SSL обаче е едно от изискванията за инсталиране на HTTP/2 , който протокол може значително да ускори зареждането на сайта. Направете го или искайте от хостинг доставчика ви да го направи след миграцията.

2. Поради разликата в сертификатите, търсачките на практика приемат HTTP и HTTPS версиите на сайта за различни сайтове – може да се сблъскате с предупреждения за дублирано съдържание.  Линковете от външни сайтове, които имате към HTTP версията Ви също не влияят на сайта Ви след прехвърлянето му, освен ако не предприемете съответните действия. Всичко това да може да има негативно влияние върху класирането Ви.

3. Събраните социални сигнали – като лайкове, споделяния, коментари и тн., както и броячи към HTTP версията на сайта също рядко се прехвърлят към HTTPS версията му.

4. Поради всички тези причини дори при едно добре изпълнено преминаване е много вероятно да изпитате спад в класиранията си макар и временен. При недобро изпълнение класирането Ви може да практически да се срине и да си остане така за дълго след отстраняването на допуснатите грешни ( или докато класирането на новите версии на страниците не се повиши органично до предишно им ниво, което може да отнеме и години).

Преминаване към HTTPS

  1. Подготовка. Има няколко неща , които трябва да се изпълнят преди да започне самото преминаване.
    1.1. Създайте бекъп на сайта си, както и на базата му от данни.
    1.2. Обходете сайта си за да знаете къде в базата му данни и във файловете му се указва името на сайта ви (обърнете специално внимание на опциите на сайта си и на конфгурационните му файлове) и къде в съдържането му има вътрешни линкове към http страници, които после ще трябва да бъдат променяни, къде се използват ресурси с http в url адреса си (картинки, видео файлове, аудио).
    1.3. Обърнете внимание на конзолата си – класирания на страници и думи, линкове към http адреси.
    1.4. Изберете подходящия за вас серификат:– Стандартен TLS/SLL сертификат – сертификати за един домейн и евентуално един или няколко поддомейна към него, зависи от къде го купувате. Най-често използвания вид сертификати. Подходящ за всякакъв вид сайтове, блогове, онлайн магазини, новинарски сайтове и други. Издава се бързо и е най-евтиния вид сертификат. Има много източници, от които може да се получи ( COMODO, LET’s ENCRYPT за пример ), повечето по-големи хостинг доставчици дават възможността да се поръчат през тях.Трябва да се отбележи безплатния сертификат на LET’S ENCRYPT. Той изтича автоматично на всеки 3 месеца, но се подновява лесно с посещение на линк, който получавате на имейла си или автоматично през cron на сайта си.– Wildcart сертификати – сертификати, издавани за домейн и всичките му поддомейни. Подходящ е за сайтове и бизнеси, които използват повече поддомейни. За пример можем да дадем познатия на всички сайт на Wikipedia. При него всеки езиков вариант на сайта използва свой собствен поддомейн en,es,bg … Цената на този вид сертификати е по-висока и обикновено отнема няколко дни да бъде издаден като издателя прави проверки на фирмата, която иска да й бъде издаден такъв сертификат.

         – Exteded Validation сертификати – най-сигурния или поне най-авторитетния сертификат, който се издава за момента. Може да бъде издаден само от малко на брой институции, обикновено се прави само на банкови, юридически или контролни институции. Правят се сериозни проверки на искащия сертификата, от онлайн, през лична до проверка на документацията. Издаването на такъв сертификат може да отнеме няколко седмици.

2. Инсталиране.

2.1. След като сте извършили предварителната подготовка и избрали и закупили SSL сертификат може да се премине към самото му инсталиране. Има много статии и видео обучения как се прави в интернет. Повечето хостинг компании поддържат такива на сайтовете, ако не можете да се справите можете да поискате и помощ от тях.

2.2. След инсталирането на SSL сертификата сайта ви трябва да отговаря и на http://сайт и на https://сайт. За да има ползва от преминаването към https и за да се избегнат всички SEO проблеми, които описахме по-горе (дублирано съдържание, линкове и други) старата версия трябва да отпадне – да бъде пренасочена с redirect 301 към новата т.е. всяка страница трябва да бъде пренасочена към https варианта й, като 301 указва че пренасочването е перманентно и търсещите машини трябва да прехвърлят всичко, което имат за http страницата към https страницата.

Преди на направите пренасочванията обаче трябва първо да направите някои редакции в сайта си. Трябва да сте открили в т. 1.2 къде в базата данни на сайта ви или ( и ) във файловете ви има зададено името на сайта ви http://сайт.  То трябва да се промени на https://сайт във всички тези места. Ако се опитате да извършите пренасочванията преди да сте направили тези промени е много вероятно да влезете в безкраен луп между http и https вариантите си или просто пренасочванията ви да нямат ефект. Например, ако използвате WORDPRESS променете в Настройки > Общи настройки WordPress Адрес (URL) и Адрес на сайта (URL). Това би сменило адреса в mysql базата данни. Ако опцията ви по някаква причина е заключена можете да извършите тези редакции през phpMyAdmin като редактирате стойностите на siteurl и home в таблицата wp-options или да изпълните

UPDATE wp_options SET option_value = replace(option_value, 'http://сайт', 'https://сайт') WHERE option_name = 'home' OR option_name = 'siteurl';
в mysql конзола. Проверете също във wp-config.php дали и там няма хардкод зададен адреса http адреса на сайта ви.

Докато сте тук променете и всички други вътрешни връзки и  елементи, които използват  http в адреса си за да заредят ресурсите си.

За WORDPRESS може да използвате съответните команди за SQL:
UPDATE wp_posts SET guid = replace(guid, 'http://сайт','https://сайт');
UPDATE wp_posts SET post_content = replace(post_content, 'http://сайт', 'https://сайт');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://сайт','https://сайт');

за да нанесете основните корекции в базата данни, но пак ще бъде необходимо да обходите файловете си, за да нанесете корекциите и там.

2.3. След като сте извършили редакциите в сайта си вече можете да извършите и самите пренасочвания.
Това може да се извърши по няколко начина. Ако използвате wordpress или друга популярна платформа, можете да намерите готови плъгини или разширения, които да извършат съответните пренасочвания автоматично.
Друг вариант е добавянето на код за редиректа директно в htaccess файла. Пример за такъв код:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Трябва да се има в предвид, че един сайт най-често има два варианта : http://сайт и http://www.сайт  които отговарят на началната му страница при извикването й. С добавянето на SSL сертификат те стават 4, https://сайт и https://www.сайт. В зависимост от това дали сайта ви искате да има www или не в името си, ще ви е необходим допълнителен редирект от www към без www или обратно.

2.4. Проверете robots.txt файла си къде в него има http: и го променете на https: (host елемент, линковете към сайтамапа)

2.5. Регенерирайте sitemap.xml файла ви така че да съдържа само https връзки към страниците на сайта ви.

2.6. Обходете отново сайта се, за да сте сигурни, че не сте изпуснали нещо. Тествайте сайта си и проверете дали се вижда катинарчето, когато го отворите в браузера си. Ако то липсва значи сте изпуснали нещо, прегледайте конзолата си и го коригирайте.

Прекарайте сайта си през някой (или няколко) от онлайн инструментите като https://www.ssllabs.com/ssltest/analyze.html или https://www.whynopadlock.com/. Ако имате достъп до инструменти като Website Auditor или Sermush проверете го и през тях и обърнете специално внимание да предупреждения за mixed content или съответните му съответствия.

2.7. След като сте извършили преминаването към https на ниво сайт следва да направите и съответните корекции и в мрежата. Нанесете съответните корекции в Google Search Console. Редактирайте профилите си в социалните мрежи, връзките към сайта си ако използвате App, в  Google Analytics ще трябва също да се промени протокола.

Ако имате възможност да промените външните линкове към сайта си в други сайтове сам, направете го. Ако не, можете евентуално да се свържете а администраторите им за помощ. Разбира се, 301 редиректа, който направихте, би трябвало да подсигури приемането на тези връзки и запазването на тежестта им, но е добре да се избягват излишните прехвърляния.

3. След миграция. След като сте изпълнили миграцията и сте отстранили грешките, които е почти неизбежно да се се появили, е добре да наблюдавате в конзолата на Google как се преиндексира сайта ви и как се променя класирането на ключовите ви думи и видимостта му. Допълнителни действия, които може би би се наложило да предприемете, ще зависят основно от тези данни.

Подобни статии