Модул 3 · 3.1
https и сертификатът
Модул 3: Адрес, https и потребители · Време за четене: 8 минути
Учебна цел: След този урок ще можете да настроите изцяло WordPress сайт на https и ще знаете какво правят WordPress адресът и адресът на сайта.
Ключови понятия: TLS, сертификат, Let's Encrypt, автоматично подновяване, WordPress адрес (siteurl), адрес на сайта (home), WP_HOME и WP_SITEURL, HSTS, заключване извън сайта
Какво прави https
С https всичко между браузъра и сървъра е криптирано: пароли, формуляри, бисквитки, дори обикновени страници. Без https всеки в същата мрежа (обществена wifi мрежа, прихванат рутер) може да чете предаваната информация и дори да променя страницата. Браузърите показват сайт без https като „не е защитен“ и някои функции (като локация или камера) работят само с https.
Криптирането се нарича TLS. За да докаже, че браузърът наистина общува с example.com, а не с посредник, сървърът има сертификат: цифрово доказателство, подписано от издател, на когото браузърите се доверяват. Сертификатът посочва имената, за които важи, и до кога.
Безплатни сертификати и подновяване
Let's Encrypt издава безплатни сертификати. Почти всеки хостинг доставчик ги заявява автоматично и също автоматично ги подновява. Сертификат от Let's Encrypt сега е валиден 90 дни, а Let's Encrypt обяви, че постепенно ще скъсява тази валидност до 45 дни. Ръчното подновяване затова не е вариант: то трябва да е автоматично.
Платен сертификат не криптира по-добре. Разликата е в допълнителната проверка на организацията (и понякога гаранция). За повечето сайтове безплатен сертификат е напълно достатъчен.
На какво да обърнете внимание:
- Сертификатът трябва да покрива всяко име, което посетител може да въведе:
example.comиwww.example.com. Включително името, което само пренасочва, защото браузърът проверява сертификата преди пренасочването. - Автоматичното подновяване успява само ако DNS сочи към Вашия сървър. Ако сте преместили DNS или сте поставили проксиращ слой (като Cloudflare) пред него, проверете дали подновяването все още работи.
- Запис CAA в DNS може да определя кои издатели имат право да създават сертификати. Ако Let's Encrypt не е включен там, заявката се проваля (DNS курс, урок 5.2).
Два адреса в WordPress
В Настройки > Общи има два адреса. Изглеждат излишно дублирани, но означават различни неща:
| Поле | В базата данни | Значение |
|---|---|---|
| WordPress адрес (URL) | siteurl | Къде се намират файловете на WordPress (wp-admin, wp-includes) |
| Адрес на сайта (URL) | home | Адресът, който използват посетителите |
Обикновено те са еднакви, например и двата https://example.com. Разликата се появява само когато WordPress се намира в подпапка, но сайтът трябва да се показва в основната папка.
WordPress изгражда всички връзки с тези адреси: към страници, стилови таблици, изображения, администрацията. Ако тук стои http://, WordPress изгражда страници с http:// връзки, дори когато посетителят влиза през https. Това създава смесено съдържание (mixed content) (урок 3.2) и пренасочвания напред-назад.
Преминаване на сайт към https
Ако имате съществуващ сайт на http, стъпките са следните:
- Заявете сертификат за двете имена и проверете дали
https://example.comработи (ще видите WordPress страница, може би все още без оформление). - Направете резервно копие (урок 8.1).
- Задайте и двата адреса в Настройки > Общи на
https://и запазете. Ще бъдете изведени от профила; впишете се отново през https. - Преобразувайте старите връзки в съдържанието от
http://example.comнаhttps://example.com. Направете това с инструмент, който разбира сериализирани данни, катоwp search-replaceили разширение за търсене и замяна (урок 3.2), никога с обикновена SQL команда. - Пренасочване: оставете уеб сървъра да пренасочва всички заявки на http с 301 към https (урок 3.2). Много хостинг доставчици имат отметка за това; иначе няколко реда в
.htaccess. - Проверка с задачата от този урок и тази от урок 3.2.
Заключени навън: ако адресът е грешен
Ако въведете правописна грешка в адресите (htps://, грешен домейн), WordPress Ви пренасочва след запазването към този грешен адрес. Вече не можете да достигнете администрацията. Без паника, има два изхода:
Чрез wp-config.php. Поставете над реда „спрете редактирането“:
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );Тези редове имат предимство пред стойностите в базата данни. Полетата в Настройки > Общи стават сиви. Впишете се, задайте правилните стойности в базата данни и премахнете редовете отново (или ги оставете съзнателно, тогава никой не може случайно да промени адресите през администрацията).
Чрез phpMyAdmin. Отворете таблицата wp_options и коригирайте стойностите на siteurl и home.
HSTS: браузърът запомня
С хедъра HSTS (Strict-Transport-Security) сървърът казва на браузъра: „идвай тук занапред само през https.“ Браузърът след това сам преобразува всеки http:// в https://, без първо да прави незащитена заявка.
Strict-Transport-Security: max-age=31536000; includeSubDomainsHSTS е добра допълнителна стъпка, но с предупреждение: браузър, който вече е видял HSTS, отказва след това да отвори сайта без валиден сертификат, дори и с „продължи въпреки това“. С includeSubDomains това важи за всеки поддомейн. Ако имате поддомейн без сертификат (например стара вътрешна система), той става недостъпен след HSTS. Затова започнете с кратка max-age (например един ден, 86400), проверете всичко, и едва тогава удължете.
На практика: така изглежда в контролен панел
Като пример използваме DirectAdmin. В cPanel частта се нарича SSL/TLS Status (AutoSSL), в Plesk SSL/TLS Certificates.
- Отворете SSL сертификати при Вашия домейн и изберете Безплатен и автоматичен сертификат от Let's Encrypt.
- Отметнете
example.comиwww.example.comи заявете сертификата. - В настройките на домейна поставете отметка посетителите винаги да се насочват към https (при DirectAdmin: Forceer SSL с https пренасочване). Използвайте само един начин на пренасочване: два различни едновременно могат да причинят цикъл („твърде много пренасочвания“).
- Отидете в WordPress на Настройки > Общи и задайте и двата адреса на
https://.
Обобщение
- https криптира всичко между браузъра и сървъра; сертификатът доказва коя е сървърната страна.
- Безплатните сертификати от Let's Encrypt имат кратка валидност и се подновяват автоматично; те трябва да покриват всяко име, което посетителят въвежда.
- WordPress адресът (siteurl) и адресът на сайта (home) трябва и двата да бъдат на
https://. - Ако сте заключени извън сайта поради грешен адрес, възстановете го с WP_HOME и WP_SITEURL в wp-config.php или в phpMyAdmin.
- HSTS е добра допълнителна стъпка; започнете с кратка валидност.
Тест
Задача
Задача A3.1: Правилен ли е Вашият сертификат? Въведете адреса на Вашия сайт. Програмата установява TLS връзка с домейна без www и с www (ако съществува) и проверява: валиден и доверен ли е сертификатът, покрива ли и двете имена, валиден ли е повече от 14 дни и изпраща ли сайтът HSTS хедър? Ако липсва HSTS, това се отбелязва в оранжево с обяснение, не е грешка.
Допълнително четене
Тези статии описват стъпките в панелите на WebOké; в други панели те работят по подобен начин.
- Ръководство за DirectAdmin 6.1: Какво е SSL и как WebOké се грижи за него?
- Ръководство за DirectAdmin 6.2: Заявяване на безплатен сертификат от Let's Encrypt
- Ръководство за DirectAdmin 6.3: Сертификат за www, поддомейни и wildcard
- Ръководство за DirectAdmin 6.4: Посетителите винаги да се пренасочват към https
- Активиране, подновяване и отстраняване на проблеми със SSL сертификат
- Разликата между безплатен и платен сертификат
- Безплатен курс по DNS 5.2: CAA: кой има право да издава сертификати?
