HTTPS становится всё более сильным трендом современного интернета. И это хорошо, особенно, когда клиенты, взаимодействуя с серверами, обмениваются с ними конфиденциальными данными. Для того, чтобы пользоваться HTTPS, нужен SSL-сертификат, который применяется для проверки подлинности сервера. Проект Let’s Encrypt значительно упростил процесс получения SSL-сертификатов. До его появления всё было гораздо сложнее.

image

Let’s Encrypt использует Certbot от Electronic Frontier Foundation для автоматизации процесса получения SSL-сертификата. Поддерживаются разные типы веб-серверов (Apache, nginx, и другие), которые работают на Unix-подобных ОС. Если ваш сервер соответствует системным требованиям Let’s Encrypt, это значит, что вы сможете получить сертификат в практически полностью автоматическом режиме. К сожалению, связку Node.js/Express.js Let’s Encrypt не поддерживает. То есть, в данном случае автоматически получить сертификат от Certbot не получится. Однако, не всё потеряно. Используя Let’s Encrypt и Certbot, сертификат не так уж и сложно получить вручную.

Предварительные сведения


Мы собираемся использовать Certbot в режиме webroot, запуская его с ключом --webroot. Если в двух словах, то в этом режиме Certbot разместит файл в некоей директории нашего сервера, которая должна быть доступна по протоколу HTTP.

С помощью Express обслуживать директории, содержащие статические файлы, можно, используя функцию express.static().

Если взглянуть на раздел документации Certbot, посвящённый режиму webroot, окажется, что Certbot будет искать на сервере файл по адресу http://<your_server_url>/.well-known/acme-challenge/. Если он может успешно получить по HTTP файл, который был размещён в указанной директории, он создаст для этого сервера SSL-сертификат.
Итак, приступим.

План работ


Для получения сертификата и поддержания его актуальности нам понадобится пройти через пять этапов:

  1. Перенаправить соответствующие порты.
  2. Настроить структуру директорий для статических файлов и организовать её обслуживание с помощью Express.
  3. Установить и запустить Certbot.
  4. Настроить Express на использование HTTPS.
  5. Обновить сертификат Let’s Encrypt через 90 дней.

Ниже опишем эти этапы подробнее, с примерами кода и команд.

Перенаправление портов


Уверен, это ни у кого затруднений не вызовет, но, для полноты изложения, опишу этот шаг.

Для успешного прохождения процесса верификации требуется URL сервера. Certbot будет использовать этот URL для того, чтобы связаться с сервером и получить данные по HTTP. Это означает, что порт 80 на предоставленном URL должен быть доступен из интернета. Не помешает открыть и порт 443, так как это порт HTTPS по умолчанию.

Лично я предпочитаю держать мои Express-сервера на портах, номера которых выше, чем 1024, а затем, используя правила перенаправления, передавать трафик с портов 80 или 443 на сервера. Как результат, мне не нужно давать Express повышенные привилегии, что безопаснее, особенно учитывая то, что веб-сервер будет обрабатывать потенциально опасный трафик.

Для того, чтобы проверить сетевые настройки, можно воспользоваться утилитой curl. Например, если на сервере имеется адрес для тестирования работоспособности системы (что всегда полезно), запрос на этот адрес можно выполнить с помощью curl. Предположим, сервер настроен так:

// filename: app.js
const app = require('express')();
app.get('/health-check', (req, res) => res.sendStatus(200));
app.listen(8080);

Если обратиться к конечной точке health-check с помощью curl, на то, что всё в порядке, укажет ответ HTTP 200.

curl http://<your_server_url>/health-check

Когда сеть и сервер готовы к работе, можно переходить к настройке обслуживания статических файлов.

Обслуживание статических файлов


Как сказано выше, адрес, по которому обратится Certbot для проверки сервера — /.well-known/acme-challenge. Express использует функцию express.static() для обслуживания статических файлов по пути, указанному этой функции. Этот путь становится корнем сервера. Часто папка, которая хранит статические данные веб-сайта, называется public или static, и, например, если у вас есть текстовый файл, видный в файловой системе как /static/test-text/mytextfile.txt, обратиться к нему извне можно по адресу http://<your_server_url/test-text/mytextfile.txt. Учитывая это, создадим структуру директорий для нужд Certbot и подключим её в Express.

cd static
mkdir -p .well-known/acme-challenge

Вышеприведённая команда выполняется из корня проекта, при этом подразумевается, что директория для статических данных имеет имя static.

// filename: app.js
const express = require('express');
const app = express();
app.use(express.static('static'));
app.listen(8080);

Теперь, после того, как Express настроен на обслуживание правильной папки, проверим работоспособность системы.

echo "this is a test" > static/.well-known/acme-challenge/9001
curl http://<your_server_url>/.well-known/acme-challenge/9001

Если в консоль будет выведен текст «this is a test», значит данный шаг успешно завершён и можно идти дальше – к созданию нового SSL-сертификата.

Certbot


Первый шаг на данном этапе – установка Certbot. Здесь можно найти инструкции по установке. А именно, чтобы их увидеть, в поле I’m using выберите None of the above, затем, в следующем поле, выберите вашу ОС. После этого будет показана команда для установки. Например, для Ubuntu 16.04 (xenial) эта команда выглядит так: sudo apt-get install letsencrypt.

Следующий шаг заключается в том, чтобы сгенерировать сертификат. Как уже было сказано, мы собираемся запустить Certbot в режиме webroot. Для этого понадобится передать ему путь, который будет использован в качестве корня веб-сервера (используя ключ –w), и доменное имя (с помощью ключа –d). В данном случае команда выглядит так:

letsencrypt --webroot -w ./static -d <your_server_url>

Здесь мы исходим из предположения, что вы находитесь в директории проекта. После успешного выполнения команды, вы увидите соответствующее сообщение и сведения о расположении сгенерированных файлов. Обычно они находятся по адресу /etc/letsencrypt/live/<your_server_url>. О том, что это за файлы, можно узнать из раздела Webroot в руководстве по Certbot. Мы собираемся использовать с нашим Express-сервером файлы fullchain.pem и privkey.pem.

Отлично! Вот он, наш новенький SSL-сертификат. Теперь задействуем его.

Express и HTTPS


Express, сразу после установки, работает лишь по HTTP. Мы можем настроить использование HTTPS в Express, используя модуль Node https. Для того, чтобы это сделать, понадобится два файла – сертификат и секретный ключ. Кстати сказать, берегите от чужих глаз секретный ключ вашего сервера, а доступ к файлу секретного ключа давайте только авторизованным пользователям.

Кроме того, рекомендуется либо скопировать файлы fullchain.pem и privkey.pem в директорию проекта, либо создать символические ссылки на них. Создание символических ссылок упрощает процесс обновления, но что именно выбрать – дело ваше.

Нижеприведённый код основан на предположении о том, что файлы fullchain.pem и privkey.pem находятся в папке sslcert в директории проекта.

// filename: app.js
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();
// Настройка сервера Express
const options = {
    cert: fs.readFileSync('./sslcert/fullchain.pem'),
    key: fs.readFileSync('./sslcert/privkey.pem')
};
express.listen(8080);
https.createServer(options, app).listen(8443);

Кроме того, тут не помешает Helmet.js. Этот пакет помогает защищать Express-сервера, управляя HTTP-заголовками. Он, помимо прочего, добавляет HSTS, убирает заголовок X-Powered-By и устанавливает заголовок X-Frame-Options для защиты от кликджекинга.

Установить его очень просто:

npm install --save helmet

После установки Helmet, его можно задействовать в Express как промежуточный слой обработки данных.

// filename: app.js
app.use(require('helmet')());

Теперь, чтобы окончательно убедиться в том, что всё работает, можно проверить сервер с помощью чего-то вроде SSL Server Test.

Обновление сертификата


Сертификаты Let’s Encrypt действуют 90 дней. Хорошо это или плохо – спорить бессмысленно, особенно учитывая то, что процесс обновления сертификата очень прост. А именно, для обновления сертификата достаточно выполнить команду letsencrypt renew и Certbot выпустит новый сертификат. Рекомендуется автоматизировать этот процесс, используя либо задания cron, либо что-то вроде systemd.

Выводы


В итоге, мы настроили сервер Express на обслуживание статических файлов по специфическому пути, использовали Certbot в режиме webroot для создания сертификата сервера и подключили HTTPS в Express, используя только что созданный сертификат. Хотя автоматический процесс взаимодействия с Certbot нам и не доступен, сделать вручную всё, что надо, не так уж и сложно.

Хочется надеяться, что Certbot, в обозримом будущем, оснастят поддержкой Node.js.

А как вы получаете SSL-сертификаты для Express-серверов? Пользуетесь ли сертификатами от Let’s Encrypt?
Поделиться с друзьями
-->

Комментарии (75)


  1. datacompboy
    06.02.2017 17:10
    +19

    nginx перед ним надо ставить для ssl, не надо мучить бедную ноду.


    1. ittakir
      06.02.2017 17:39

      Подтверждаю, вот неплохой тьюториал по настройке Nginx + Lets encrypt.
      Сервер получает рейтинг A+ на здесь


      1. onthefly
        06.02.2017 18:49
        +4

        Не сочтите за навязчивость, но почему «тьюториал», а не руководство, инструкция либо наставление, наконец? Русский язык не настолько беден, чтобы использовать подобные кальки.


        1. phoenixweiss
          06.02.2017 19:28

          Очевидно потому что по ссылке оригинал на английском языке. Если бы по ссылке было именно руководство на русском, я думаю комментатор бы сделал соответствующее уточнение.


          1. onthefly
            06.02.2017 19:37
            +6

            А если бы оригинал был на китайском, какое слово необходимо использовать и из чего следует ваша логика?


            1. phoenixweiss
              08.02.2017 11:36

              К сожалению процент русскоязычного населения знающих китайский ничтожен по сравнению с владеющими английским. Ссылка на англоязычный ресурс на хабре не вызывает вопросов, потому что большинство спокойно сможет ею воспользоваться. Если бы столько же людей спокойно читали статью на китайском, вероятнее всего у нас бы точно также и появилось заимствованное слово, означающее как раз руководство или обзор.

              Я не утверждаю что автор комментария поступает правильно, просто лично мне вполне понятна его логика, тем более что он написал именно «тьюториал», а не «туториал» указывает на это.

              Кроме того тут еще можно рассматривать этимологический аспект — английское «tutorial» совсем не одно и то же что русское «руководство», потому что под первым подразумевается по форме именно пошаговое описание действий, градации смысла у нашего аналога иные. Это как сказать что «панкейк» — это оладушек по сути, но тем не менее когда мы видим в меню именно «панкейк» то ожидаем совсем не то же самое что от «оладушка». Вместе с терминологией часто перенимается и некоторая метаинформация, которая подчас помогает ориентироваться тем кто в теме.

              P.S. в комментариях ниже правильно отметили про «сервер» и «рейтинг», а также про то что guide и tutorial — не одно и то же.


              1. onthefly
                08.02.2017 18:35

                Скажите пожалуйста, почему, по вашему мнению, текст по ссылке https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04 нельзя назвать:
                1) руководством
                2) пособием
                3) инструкцией
                4) наставлением.

                Прошу ответить по каждому из вариантов отдельно, опираясь не на личные ощущения, а на толковые словари русского и английского языков.


                1. phoenixweiss
                  09.02.2017 04:03
                  +1

                  Я не являюсь автором комментария к которому вы прицепились, просто говорю что мне понятна логика автора, в ней нет ничего такого отчего кровоточили бы глаза.

                  Однако раз уж пошла такая петрушка, по порядку:
                  1) «руководством» это назвать как раз можно и фактической ошибки тут не будет никакой, но все же под руководством обычно подсознательно хочется понимать документацию, написанную авторами/разработчиками, то есть что-то более официальное. Если это чья-то конкретная практика, описание конкретного кейса(также слово сложно заменить на русский аналог, не на «обстоятельства» же?), то есть мысли тьютора, наставника, то ближе было бы именно «наставление», но так в русском языке не говорят.
                  2) человек, чей родной язык русский уж точно не назовет этот документ «пособием», так про такие материалы просто не говорят, это звучит коряво. Но если комментатор назвал бы «пособием», все бы поняли о чем речь, хотя подсознательно под пособием понимается некоторая более описательная и большая по объему информация, помогающая научиться что-то делать, сформировать практический навык, например, приготовления каких-то блюд или пособие по выживанию.
                  3) «инструкцией» это также назвать можно, и также фактической ошибки тут не будет, но под инструкцией чаще всего представляется то что обзывают manual (опять же, «курить мануалы» уже стойкая конструкция), то есть документом описывающим возможности софта или прибора и действия для реализации каждой из них, а не только действия. Инструкция часто содержит как положительные так и отрицательные кейсы использования, описание проблем и ошибок, а не только достаточные минимальные шаги.
                  4) про «наставление» сказал выше, что чисто этимологически как бы странно не звучало, но это наиболее близкое слово, потому что тьютор — это наставник, а тьюториал по сути и есть наставление, но в современном русском языке это звучит коряво и старомодно, возможно немного высокопарно, ближе по значению к словам «поучение» и «поучать». Хотя опять же, если бы комментатор написал так, это бы все равно поняли, просто списали на некоторый стиль общения. Иллюстрацией тут может служить манера письма уважаемого Mithgol — например вам и без словаря будет прекрасно понятно слово «блогозапись» но далеко не факт что вы сами будете использовать в своей речи это слово, заменяя на более привычные аналоги в собственном лексиконе.

                  Просьба ответить опираясь на толковые словари по своей сути ни что иное как провокация. Вы же не приводите никаких данных о том почему у нас вдруг для этих языков становится невозможным использовать заимствования? Просто напомню что 20 лет назад слов «менеджер» и «интернет» в русском языке не существовало. При этом если с «интернетом» еще понятно что новая сущность требует номинального названия, то с «менеджерами» почему-то никто не использует в описании профессии русские слова «управляющий», «управленец», потому что существуют некоторые градации смысла и тут. Равно как и свои исключения тут также присутствуют, но они чаще касаются устойчивых выражений или традиционных профессий, например «управляющий рестораном».

                  Русский и Английский языки, как и любые живые языки не являются статичными, и в том и в другом языке существует огромный набор возможностей для образования новых слов и оба языка открыты к заимствованиям из других языков. Нюанс тут состоит только в том какой стиль речи используется, литературный или разговорный. Разговорные нормы очевидно значительно более гибкие нежели литературные, и для того чтобы слово было признано литературным и попало в словарь должно пройти немало времени и кроме всего прочего им должны действительно пользоваться. Однако всегда ли вы используете в речи нормы именно литературные? Еще несколько лет назад все отступления от нормы литературного языка (кроме орфографических и пунктуационных) считались стилистическими ошибками, без всякой дальнейшей их дифференциации. Такая практика признана порочной. Ошибки необходимо дифференцировать в зависимости от того, на каком речевом уровне они допущены. Было бы крайне наивно полагать что комментарии к статьям на хабре должны писаться с соблюдением именно литературных норм языка.

                  На первом году аспирантуры научный руководитель дал очень дельный совет — крайне полезно уметь адаптировать свою речь в соответствии с окружением и ситуацией. Это принято называть «правилом адаптации «словесной партитуры» речи». Так если вы понимаете что собеседник априори не поймет тех выразительных средств которыми вы пользуетесь, то «нечего метать бисер перед свиньями»; однако справедливо и обратное утверждение о том что нужно придерживаться стиля речи собеседника либо помалкивать.

                  В среде в которой принято использовать заимствованные слова к ним в любом случае относятся благосклонно. Кроме IT-шников был опыт общения и в коллективе медиков и в коллективе переводчиков и везде есть своя крайняя специфика к которой не принято придираться. Отдельного упоминания стоят русскоговорящие граждане других государств, от которых требовать соблюдения языковых норм тоже считается дурным тоном. Живя в Германии, например первое время казались чудными слова «зашпайхеровать» и «дрюкнуть», от speicher и drucken соответственно, что для нас такие привычные «сохранить» и «распечатать».

                  Это я к чему — если на хабре народ понимает что такое tutorial то здесь вполне уместно употребить «тьюториал» — на форуме молодых мамочек это слово бы не поняли, но там бы его просто не стали использовать.


                  1. onthefly
                    09.02.2017 16:34
                    -2

                    Просто напомню что 20 лет назад слов «менеджер» и «интернет» в русском языке не существовало.


                    Я говорю о том, что у конкретного английского слова есть сразу четыре подходящих по смыслу русских слова, причём одно из них составители Кембриджского словаря предлагают в качестве перевода. А вы подменяете понятия и говорите об интернете и менеджерах, аналогов которым в русском языке не было.

                    Просьба ответить опираясь на толковые словари по своей сути ни что иное как провокация.


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

                    Таким образом, вы совершенно напрасно потратили время на написание огромного комментария: он не содержит ничего, кроме вашего личного мнения, которое, в свою очередь и так вполне понятно было изложено в других комментариях.


                    1. phoenixweiss
                      09.02.2017 20:42

                      А что простите доказывает всего одна приведенная вами ссылка на перевод с Cambridge.org?

                      Это ли академическая дискуссия с привлечением источников? Вы сами задали тон беседы и я не сильно понимаю какой источник хотите чтобы я привел. К сожалению научных работ по допустимости намеренного использования заимствований найти не удалось, однако сомневаюсь что вы сможете привести также какой-либо источник, явно это запрещающий или указывающий на невозможность использования фонозаимствований. Так что не вижу смысла что-то доказывать собеседнику, не приводящему аргументов. Большинство общеупотребимых заимствований также до сих пор не включены в официальные словари, но это не повод их не использовать. Например у такого слова как киллер судя по Кембриджскому словарю есть только один прямой перевод, но слово тем не менее используется как англицизм без перевода, передавая дополнительный оттенок смысла. А вот слова «шейкер» в кембриджском словаре вообще нет, но любой бармен поспорит с правильностью ориентироваться только на этот источник, т.к. «закрытым сосудом для встряхивания коктейлей» его точно называть не будут.

                      А про менеджеров вы не правы: в русском языке существовали такие слова как «управляющий», «руководитель», «распорядитель», «управленец», а если копать глубже то с натяжкой можно и слово «душеприказчик» сюда подтянуть.

                      Кстати, тут могу привести и ссылку на тот же Кембриджский словарь, однако тут важный момент что в обиход у нас уже вошло слово «менеджер», но к сожалению у меня нет доступа ко всем изданиям того же Cambridge Dictionary чтобы с уверенностью сказать в каком году такой перевод стал возможен.

                      У нас же дискуссия касается намеренного использования заимствования, причем еще раз повторюсь что это не я использовал это слово, я лишь говорю что мне понятна логика автора и не стоит его за это уличать в безграмотности ибо истинного мотива использования именно этого слова мы не узнаем без комментария от автора. Мне видится тут аналогия с использованием того же слова «манагер» вместо «менеджера», если приводить примеры.

                      Не знаю какие конкретно источники для вас будут официальными, но лично мне очень понравилась вот эта статья. К сожалению я не обладаю инструментами поиска по диссертациям и научным работам, а в открытом виде в интернете грамотного конкретного примера который при этом опирался бы на какие-либо комплексные исследования к сожалению найти по этой тематике нет возможности. Однако если вы приведете какой-либо пример, явно запрещающий использование заимствований при существовании прямого перевода — мне будет интересно почитать.


                      1. onthefly
                        10.02.2017 04:20
                        -2

                        Вы прекрасно знаете, что в обиходе слово «менеджер» не соответствует своему исходному значению и обозначает специалиста по продажам, но при этом продолжаете подменять понятия. Не нужно уходить в сторону от конкретного обсуждаемого слова, если вам нечего сказать по существу, то найдите мужество признать это.


                        1. phoenixweiss
                          10.02.2017 13:35

                          По существу — то слово для которого вы пытаетесь доказать отсутствие перевода может быть явно использовано как англицизм, не требующий перевода.
                          Официальных словарей англицизмов как таковых не существует, однако есть такие энтузиасты как например Дьяков Анатолий Иванович, которые собственноручно собирают англицизмы. К слову сказать, «тьюториал» и «тьютор» там тоже есть, на букву «Т», только к сожалению официальность этой ссылки сложно сравнивать с официальным сайтом Кембриджского словаря.
                          Однако, справедливости ради, словари заимствованных слов и переводов должны составляться на стороне языка, принимающего эти слова в себя, то есть вероятность что когда-нибудь англицизмы будут включены в официальные словари Английского языка ничтожно мала, но делать на основании этого факта и отсутствия этих слов в таких словарях выводы об их употребимости — невежество.


                          1. onthefly
                            10.02.2017 14:36
                            +1

                            Спасибо, ваша позиция мне вполне понятна. Я не утверждал что я прав, а вы однозначно нет, просто просил объективных аргументов.


        1. express
          06.02.2017 19:32
          +18

          Тьюториал — это сложновыговариваемый ворд, который говорит о выдающихся скиллах и талентах написавшего зэт коммент. Это же обвиэс.


        1. ittakir
          06.02.2017 19:50
          +1

          примерно потому же, почему «сервер» и «рейтинг»


          1. onthefly
            08.02.2017 18:36

            Вы приводите слова, которые не имеют прямых аналогов в русском языке. Значит ли это, что вы убеждены, будто обсуждаемое слово также не имеет аналога и не может быть переведено?


            1. ittakir
              09.02.2017 07:12

              Мне жаль, что на гипертекстовой странице, посвященной информационным технологиям, и связанными с этим обсуждениями, вас более всего беспокоят употребляемые слова русского языка. Дабы снизить уровень вашей тревожности, я бы порекомендовал вам избегать таких собраний, так как в такой среде люди более нацелены на достижение конечного результата, зачастую пренебрегая формализмом при общении между собой.


              1. onthefly
                09.02.2017 16:36
                -1

                Слив засчитан!


        1. SKolotienko
          06.02.2017 20:05

          В английском языке есть два слова, которые одинаково переводятся на русский, как руководство: guide и tutorial. При этом они обладают немного разной семантикой. И если в оригинале материал обозначен как tutorial, то не вижу ничего плохого в использовании транслитерации.


          1. onthefly
            08.02.2017 18:39

            Я оставляю за вами право считать себя сколь угодно крупным специалистом по русскому, английскому, семантике и переводам, но составители Кембридского словаря считают, что это слово имеет вполне конкретный перевод. Ссылка в моём комментарии выше.


            1. phoenixweiss
              09.02.2017 21:10

              Эх. если бы все официальные переводы мерились исключительно наличием слова в Кембриджском словаре, труд профессионального переводчика был бы совсем не востребован. Нам на одном медицинском проекте периодически поступают задачи на перевод второго врачебного мнения и медицинских заключений, и к сожалению на http://dictionary.cambridge.org из большинства устойчивых конструкций нашлось мало что, однако на удивление там есть четкое определение obstructive sleep apnoea, но перевода официального нет, а профессиональный переводчик медицинских текстов понимает что переводить нужно как «синдром обструктивного апноэ сна», хотя например в приведенном вами словаре нет прямого русского перевода не только всей конструкции, но даже слова «obstructive» — означает ли это что слово «обструктивный» в этом случае мы использовать не можем вообще?


              1. onthefly
                10.02.2017 04:49
                -2

                Я нигде не говорил, что этот источник является единственным возможным. Он у меня есть, а у вас нет ничего, кроме вашего личного мнения, которое вы упрямо повторяли в нескольких комментариях, хотя я вас просил о другом.

                И вы сейчас проявляете недюжинное лукавство, пытаясь скомпрометировать словарь отсутствием какого-либо слова в нём.

                Подведём итог: я привёл аргумент о том, что плодить сущности (калька с английского) нет надобности, поскольку у слова есть конкретный перевод и дал ссылку на словарь и не пытаюсь вас переубедить. Вы:
                — многократно повторили своё собственное мнение без единого источника (ad nauseam);
                — пытаетесь поставить под сомнение авторитетность источника, на который я ссылался, по причине того, что там нет перевода другого слова;
                — подменили понятия, приводя в пример шейкер, менеджеров, интернет и другое (ignoratio elenchi);
                … и совершили другие некорректные с точки зрения логики действия.

                При этом, обратите внимание, я интересуюсь только обоснованием вашего мнения, прошу предоставить ссылки на источники, только и всего. Но этот факт вас выводит из равновесия (говорите о провокациях) и вместо ответов на вопросы вы зачем-то принимаетесь меня убеждать в том, что ваше мнение верно. Всё это напоминает дискуссию материалиста и верующего.

                А вы могли отделаться всего лишь одним комментарием «ссылок у меня нет, это моё частное мнение» и инцидент был бы исчерпан.


                1. phoenixweiss
                  10.02.2017 13:24

                  К сожалению единственным источником, на который вы опирались и была только ссылка на этот словарь. «Он у меня есть, а у вас нет ничего, кроме вашего личного мнения...» — как-то фраза вообще не вяжется с академической дискуссией.

                  Для того чтобы грамотно ответить на аргумент, мне нужно понимать на что этот аргумент опирается чтобы действовать в рамках «той же системы координат».

                  Вы привели пример из конкретного словаря, который по существу не доказывает ничего, кроме того что именно в этом словаре нет использованного слова в качестве «официального» перевода, на что я привел пример что там далеко не для всех слов есть переводы и наличие или отсутствие перевода в Кембриджском словаре само по себе не является основанием полагать что какое-то из слов может или не может быть употреблено. То есть формально вы меня вынудили играть по вашим правилам, но как только я эту игру принял, вы из нее как-то неуклюже выходите.

                  По поводу дискуссии материалиста и верующего также хотел привести пример, только по всем формальным признакам в роли верующего выступаете вы: «в священной книге не указано что такое слово есть, значит его нет», на что единственное что мне остается — поискать слова из той же книги на несоответствие. К слову, ссылку я тоже приводил на материал по англицизмам.

                  Для ведения академической дискуссии было бы как минимум справедливо подкрепить вашу претензию не ссылкой на словарь в котором нет этого слова а на любой научный материал по заимствованиям. Слова «тьютор» и «тьюториал» вероятно может и не быть ни в одном из официальных источников просто потому что это не перевод, а явный фонозаимствованный англицизм, а такие слова по определению не являются переводами, что я и попытался проиллюстрировать.


                  1. onthefly
                    10.02.2017 14:55
                    -1

                    Академический подход подразумевает опору на источники, а вы опираетесь исключительно на веру в собственную правоту, ваши доводы нефальсифицируемы, их проверить невозможно, они существуют только в вашем сознании. В этом и заключается отличие материалиста от верующего.

                    А ещё верующие не выдерживают рациональных дискуссий и широко практикуют аргументы к личности, к тошноте, подмену тезисов, использование аргументов оппонента против него самого и другие приёмы, владение которыми в этом посте вам удалось продемонстрировать.

                    Обмена мнениями не вышло, вместо ответов на конкретные вопросы вы пытаетесь втянуть меня в спор и навязать свою точку зрения, что опять же свойственно верующим.


      1. robert_ayrapetyan
        07.02.2017 04:33

        https://wiki.freebsd.org/BenWoods/LetsEncrypt — а тут вообще все в два клика.


    1. datacompboy
      06.02.2017 17:41

      к слову, им же удобно раскидывать 80 и 443 по внутренним разным серверам на разных портах через hostname или по путям или еще по куче вариаций.


      1. VolCh
        06.02.2017 21:06
        -1

        По транслитерации будет туториал


  1. acmnu
    06.02.2017 17:44
    +5

    Я правильно понял, что в статье всерьёз предлагают использовать node.js для раздачи статики?


    1. Revertis
      06.02.2017 18:37
      +1

      А что вас удивляет? :-)
      Скоро начнут появляться статьи типа «Пишем свою ФС на node.js», или «Драйвер на node.js — это просто!» :)

      П.С.: Это, конечно, ужасно.


      1. Galiaf47
        07.02.2017 09:39

        А можете просветить, почему статика на ноде это плохо? Скажем захотелось захостить сайт на хероку, а знаю только js и проблем с раздачей статики через ноду раньше не встречал. Почему я должен отказаться от идеи раздавать статику на ноде?


        1. Revertis
          07.02.2017 11:08

          Не, ну гвоздь иногда и микроскопом можно забить, конечно…
          А если понадобилось «захостить сайт», то надо изучить хоть как-то nginx. Или вы сознательно отказываетесь от новых и полезных знаний?


          1. Galiaf47
            07.02.2017 11:19

            Я привел абстрактный пример, js не моя основная специализация, но я с удовольствием пользуюсь нодой т.к. она позволяет очень быстро запустить прототип чего угодно от раздачи статики до управления микроконтроллерами.


          1. VolCh
            09.02.2017 08:37

            Вообще говоря, если производительности и надежности ноды хватает в том числе и для обслуживания статики в конкретном кейсе, то почему бы и нет? И это, по сути, забивание гвоздей обычным молотком, а не строительным пистолетом. И вопрос не просто в изучении, а в постоянном использовании. Провижн и деплой одного независимого ни от чего серверного приложения значительно проще чем двух зависимых.


      1. m0sk1t
        07.02.2017 11:06

        OS на JS! (и да, я знаю что уже есть)


  1. Yanovsky
    06.02.2017 18:03

    Можно еще получать ssl сертификат подтвердив домен через TXT запись
    https://letsencrypt.github.io/acme-spec/#rfc.section.7.4


  1. Permyakov
    06.02.2017 18:06

    LetsEncrypt научился работать с Windows XP? Не поделитесь, сколько у вас посетителей с XP?


    1. MikalaiR
      06.02.2017 20:13

      Научился с тех пор как получил кросс-подпись от IdenTrust (конец 2015).


      1. Erelecano
        06.02.2017 20:46
        +3

        Нет, не научился. Windows XP не дает зайти на сайты с сертификатами от LE, хоть из под Chrome, хоть из под осла. Выход только Firefox, который носит CAшные сертификаты с собой.
        Другое дело, что 0.1% пользователей, которые сношают труп свиньи можно просто пренебречь


        1. MikalaiR
          06.02.2017 22:19

          Ну не знаю, у меня под рукой нет WinXP, но тест от SSLLabs утверждает, что все нормально.
          Скриншот


          1. Erelecano
            06.02.2017 22:54

            А у меня у одного из клиентов посетители ходят из под WinXP и мне пришлось таки в декабре на одном из сайтов клиента отказаться от LE в пользу Comodo, ибо клиент не попадали на сайт(ну и я сам из тестовой свиньи тоже не попадал, ставил ее в виртуалку для проверки).


        1. Permyakov
          07.02.2017 06:24

          К сожалению, в гос компаниях XP еще используется. В 0.1% может легко попасть руководитель, который не сможет зайти на сайт\систему, не получит нужные данные и сильно расстроится. Со всеми вытекающими.


          1. Erelecano
            07.02.2017 12:36
            +2

            Советские гос.конторы неинтересны, их проблемами нужно пренебрегать. Если где-то сидит мудак-шеф со свиньей, то пусть страдает.


        1. dem0n3d
          07.02.2017 13:14

          Только вчера проверял на виртуалке: работает и FF и Chrome, причём даже с SNI, хотя вроде как не должен.


  1. express
    06.02.2017 18:36

    > Хорошо это или плохо – спорить бессмысленно

    Почему бессмысленно? Есть какая-то особая польза в трехмесячном сертификате?


    1. datacompboy
      06.02.2017 18:39

      это одно из упрощений в борьбе с revokation, например.


      1. express
        06.02.2017 19:20

        Неудобства с продлением возникают чаще чем отзыв сертификата, как мне кажется. Ну, и уж точно этот летсэнкрипт не для обладателей хостингов с цпанелями и плесками. Безотносительно своих косяков, Стартком в этом плане был менее ублюдочным.


        1. datacompboy
          06.02.2017 21:02

          ну см. ниже ссылку на их фак — второй по значимости, это что при 90 днях тебе _придётся_ автоматизировать, иначе задолбаешься.


  1. onthefly
    06.02.2017 18:44

    Я обратил внимание, что с января letsencrypt стал выдавать сертификаты вместо 90 дней сразу на тысячу, но в статье об этом не упомянуто. Это затронуло не всех?


    1. dmitry_ch
      06.02.2017 18:54

      Только что переполучил на своем сервере — нет, на 3 месяца так и выдает. Может, у них где-то тест скрипта был, а вы «под раздачу» (в хорошем смысле) попали?


    1. datacompboy
      06.02.2017 18:55

      а можно глянуть на пример их сертификата на 1000 дней?

      Вообще они официально в FAQ заявляют что 90 дней и только.
      https://letsencrypt.org/2015/11/09/why-90-days.html


      1. onthefly
        06.02.2017 19:45
        +1

        Прошу меня извинить, это банальная невнимательность. Примерно тысяча дней до истечения сертификата самого letsencrypt, не туда посмотрел


  1. Erelecano
    06.02.2017 19:42
    +3

    > Let’s Encrypt использует Certbot от Electronic Frontier Foundation

    Нет. Это не так. LE использует ACME, для общения с которым есть три десятка клиентов.
    Прямо на сайте LE это и написано «If Certbot does not meet your needs, or you’d like to try something else, there are many more ACME clients to choose from»
    Перевод: «Если certbot не подходит к вашим требованиям, то вы можете попробовать другие клиенты отсюда»
    https://letsencrypt.org/docs/client-options/

    Certbot — самый неудобный из имеющихся. Не советуйте его бедным людям.
    Перепробовав практически все имеющиеся я, для себя, остановился на https://github.com/hlandau/acme, например.


    1. LemonFox
      06.02.2017 20:46
      +2

      Я использовал certbot, так как он указан по официальной ссылке с le.
      Но было бы неплохо почитать сравнение acme-клиентов, если вам не сложно.


    1. snp
      06.02.2017 21:16
      +1

      Что именно там неудобного? Сертификаты запрашивает, обновляет — больше ничего от него не требуется.


      1. Alabastr
        07.02.2017 10:50

        Например не очень адекватной работой с вируальными хостами в Апаче. У меня из 5 доменов видит 1 (2, если быть честным — один и тот же домен с www и без).


        1. snp
          07.02.2017 11:12

          Ну это проблема всех «комбайнов», всё предусмотреть не выходит.


          Конфиги должны генериться ансиблом/шефом/… (или руками на крайний случай). Релоад сервера — по флагу.


          А задача подобной тулзы — сгенерить новый или обновить имеющийся сертификат и поставить флаг, что стоило бы релоад вебсервера сделать. Всё. Больше ничего не надо. И рута ей не нужно.


          certbot можно запустить в таком режиме. Думаю, есть его более простые аналоги, где функционал изменения конфигов вообще отсутствует.


      1. VolCh
        09.02.2017 08:42

        Я прочитал его описание и просто не рискнул его запустить на препрод среде, поставил сертификат от своего CA (openssl в консоли) и разослал приемщикам его сертификат с инструкциями по установке. Как мне показалось по описанию certbot делает значительно больше чем просто запрос сертификатов и их обновление.


        1. Erelecano
          09.02.2017 10:09

          Используйте альтернативы. Среди альтернатив есть вообще скрипты на баше, можете весь текст вычитать, если в чем-то не уверены.


  1. jehy
    06.02.2017 21:00
    +2

    Ну утомили уже летс энкриптом. Раз в неделю про него статьи. Но эта переплёвывает остальные — что-то более жестокое и бессмысленное, чем вешать SSL прямо на ноду, придумать сложно.


  1. Jogger
    07.02.2017 04:20

    Жаль let's encrypt только для SSL подходит, к почте не прикрутить(


    1. snp
      07.02.2017 11:20

      1. MitchellK
        10.02.2017 10:48
        +3

        Спасибо за размещение ссылки на мой учебник, да действительно сертификаты LE можно использовать с большим успехом Postifx и Docevot на Ubuntu и набрать 94% + на https: // Http: //www.emailsecuritygrader.com

        Thanks for posting the link to my tutorial, yes indeed LE certificates can be used very successfully with Postifx and Docevot on Ubuntu and score 94%+ on https://http://www.emailsecuritygrader.com


    1. Erelecano
      07.02.2017 14:09
      -2

      А зачем врать-то? Хоть к почте, хоть к IRC, хоть к чему. Обычный сертификат который можно использовать где угодно.


      1. Jogger
        07.02.2017 16:10

        Видимо я неправильно понимал фразу «Email encryption and code signing require a different type of certificate that Let’s Encrypt does not issue.» Значит надо себе настроить.


        1. nikitasius
          08.02.2017 19:10

          И после того, при наличии у вас яблочных клиентов на почтовом сервере, последние перестанут глючить (так как айфоны требуют валидный сертификат на мейлсервере).
          Я себе настроил.


  1. shachneff
    07.02.2017 11:01

    Оффтоп, но все же: Chrome 56, как теперь посмотреть данные ssl-сертификата сайта? Раньше при клике по «замочку» можно было посмотреть, а сейчас?


    1. sbahn
      07.02.2017 14:57

      Developer tools -> Security


    1. m0sk1t
      07.02.2017 15:08

      так и сечас можно, нажимаете Details и при этом вас перекидывает в Developer Tools на вкладку Security уже ответили…


  1. MalHira
    07.02.2017 13:11
    -1

    Начал использование LetsEncrypt еще когда он поддерживал Дебиан 6… Но после изменения зависимостей временно пришлось отказаться… Пару недель назад вспомнил про него и снова решил помучаться… С учетом предыдущих издевательств над системой (по достижению оценки А+ на SSLLab на Nginx) Certbot «из коробки» не встал…

    Но повезло, что один из сторонних скриптов (BASH) отработал на отлично =))

    p.s. Использование 6-го Дебиана обусловлено рядом факторов, обсуждать которые нет смысла


  1. Redik
    07.02.2017 14:57
    -1

    а как быть с обновлением сертификата, если у меня виртуальный хостинг?


  1. MasMaX
    07.02.2017 15:59

    А что делать, если у меня на сервере крутится несколько сайтов? По-моему данный пример сугубо в целях обучения можно использовать.


    1. MalHira
      07.02.2017 20:20

      у меня тоже крутится несколько сайтов… прикрутил без проблем =)
      в моем случае — для каждой группы доменов (поддоменов) получал отдельный сертификат. Встало без проблем

      п.с. использовал «баш-скрипт» от «третьих лиц»


      1. MasMaX
        07.02.2017 20:50

        С сертификатом понятно, а где идет разделение на поддомены? 10 сервисов ноды и все лезут на Http порт?


        1. MalHira
          07.02.2017 21:38
          +1

          разделение в конфигах nginx…


  1. MalHira
    07.02.2017 21:36

    *удалено*