И так, для начала скачиваем софтину:

Если у Вас нет 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!