Масавы пераход сайтаў на працу па зашыфраваным пратаколе дзень за днём набірае абароты. І калі раней работа з сертыфікатамі ўяўляла сабой даволі руцінную задачу, то сёння можна папросту і бясплатна атрымаць сертыфікат з базавай праверкай прыналежнасці ўладальніку.
І ў гэтым нам дапаможа класны сэрвіс Let's Encrypt . Гэты цэнтр сертыфікацыі пачаў працаваць у бэта-рэжыме з 3 снежня 2015 года. І за гэты час колькасць яго карыстальнікаў расце.
Let's Encrypt выдае сертыфікаты з тэрмінам дзеяння, роўным 90 днях. Пры гэтым, абнаўленне сертыфікатаў цалкам аўтаматызавана. На дадзены момант у Debian з рэпазітара backports можна ўсталяваць пакет certbot, які забяспечвае лёгкае атрыманне сертыфікатаў і іх аўтаматычнае абнаўленне, выконваюць два разы на суткі па крону.
У першую чаргу падлучальны рэпазітар backports . са свежай версіяй nginx, сабранай з падтрымкай ALPN.
А следам ўсталяваць certbot:
aptitude install -t jessie-backports certbot
Змест артыкула:
- Получаем сертификат для Nginx 1 Атрымліваем сертыфікат для Nginx
- А что насчёт Apache? 2 А што наконт Apache?
- Автоматическое обновление сертификатов по крону 3 Аўтаматычнае абнаўленне сертыфікатаў па крону
Атрымліваем сертыфікат для Nginx
Каб атрымаць сертыфікат для гэтага вэб-сервера, будзе выкарыстоўвацца убудова «webroot» , які падыходзіць для выкарыстання з любым серверам. Нават калі гэта lighttpd.
Каманда для атрымання сертыфіката выглядае так:
certbot certonly --webroot -w /var/www/example.com -d example.com -d www.example.com
Тут пасля ключа -w паказваем поўны шлях да каталога з сайтам на сэрвэры. Пасля ключа -d імя дамена, для якога трэба атрымаць сертыфікат. Адначасова можна атрымаць сертыфікаты на пяць даменаў. Не забудзьцеся пазначыць дамен з www і без. ;)
Тэчка з сайтам павінна існаваць і быць даступнай з інтэрнэту, каб certbot мог пацвердзіць прыналежнасць сайта і яго карэктную працу.
Атрыманыя сертыфікаты варта шукаць у каталогу /etc/letsencrypt/live/yourdomain.com/. У якасці сертыфіката ў конфіге сервера трэба прапісаць файл fullchain.pem, а ў якасці ключа - privkey.pem. прыклад:
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
А што наконт Apache?
Для яго таксама можна атрымаць сертыфікат. Падыходзіць як вышэй апісаны метад, так і спецыяльна задуманы убудова для apache. Толькі ў гэтым выпадку прыйдзецца ўсталяваць іншы пакет.
aptitude install -t jessie-backports python-certbot-apache
А сам сертыфікат устанаўліваецца больш просты камандай:
certbot --apache
Ці, калі вы хочаце ўручную наладзіць apache:
certbot --apache certonly
Натуральна, сайт і ў гэтым выпадку павінен быць ужо наладжаны. На жаль, свой вопыт выкарыстання certbot для apache я не змагу апісаць, так як даўно не карыстаюся гэтым вэб-серверам. Таму, рэкамендую прачытаць афіцыйную дакументацыю на англійскай.
Аналагічна nginx, шлях да сертыфікатах і ключу варта прапісаць у канфігурацыйным файле віртуальнага хаста.
SSLCertificateFile "/etc/letsencrypt/live/yourdomain.com/fullchain.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
Аўтаматычнае абнаўленне сертыфікатаў па крону
Як ужо згадвалася раней, пры ўсталёўцы ствараецца заданне на абнаўленне ў каталогу /etc/cron.d/certbot, выкананае двойчы ў суткі. Змесціва заданні такое:
0 * / 12 * * * root test -x / usr / bin / certbot && perl -e 'sleep int (rand (3600))' && certbot -q renew
Пры гэтым, уся праца certbot запісваецца і яго логі вы можаце знайсці ў каталогу / var / log / letsencrypt /. Гэта можа дапамагчы, калі ў вас паўстануць праблемы. Аднак, са свайго досведу магу заўважыць, што такія не ўзнікалі, пакуль што. :)
Як выдаліць сертыфікат? :)
Праблема ў тым, што рэдырэкт на https, а трэба каб сайт быў даступны і па http