И так, для начала скачиваем софтину:
Если у Вас нет git, то делаем в Debian/Ubuntu:
apt-get install git
или в RH-based системах:
yum install git
Далее всё просто:
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help
После выполнения вышеописанной команды letsencrypt-auto подтянет все необходимые зависимости.
Далее, необходимо запустить генерацию сертификата, и чтобы не возиться с автоматическим добавлением ключа к вебсерверу (мало ли как он у нас настроен?), сообщим, что мы хотим сами вручную добавить его на вебсервер:
./letsencrypt-auto certonly --manual
После чего letsencrypt спросит имя доменов, для которых мы хотим сгенерировать сертификат, их нужно указать через пробел (например, domain.com www.domain.com) и приватный ключ а также попросит разрешения на запоминание вашего IP (не знаю, зачем это) и закинуть по указанному адресу файл с определённым именем и хешем:
http://domain.com/.well-known/acme-challenge/ТутДлинноеИмяФайлаБезРасширенияНаАнглийском
с содержимым:
КакойТоХешОснованныйНаИмениФайла.ИЕщёКакомТоКлючеНаАнглийском
Будьте внимательны, если Вы указали два домена или больше (в том числе и субдомена), то для каждого домена (или субдомена) будет свой файл и свой хеш и их нужно закидывать и проверить доступность, иначе сгенерировать сертификаты и ключи не удастся и процедуру придётся повторять.
Если всё проделали правильно, то в /etc/letsencrypt/live/domain.com будут лежать файл сертификата cert.pem и ключа privkey.pem
Поскольку наиболее популярный фронтенд — это nginx, то опишу, также, как должна выглядеть секция server{} с включенной поддержкой SSL (HTTPS):
Включаем принудительно перенаправление HTTP->HTTPS
server {
listen aaa.bbb.ccc.ddd:80;
server_name domain.com www.domain.com;
location / {
return 301 https://domain.com$request_uri;
}
}
Так выглядит виртуальный хост с указанными сертификатом и ключём:
server {
listen aaa.bbb.ccc.ddd:443 ssl;
server_name domain.com www.domain.com;
keepalive_timeout 60;
...
ssl_certificate /etc/letsencrypt/live/domain.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "RC4:HIGH:!aNULL:!MD5:!kEDH";
add_header Strict-Transport-Security 'max-age=604800';
...
}
Проверяем конфиг nginx:
nginx -t
И если всё хорошо, применяем новую конфигурацию:
nginx -s reload
Enjoy your food!