Несколько сертификатов SSL на сервер узла - PullRequest
0 голосов
/ 30 октября 2019

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

1) Присоединить несколько SSL-сертификатов к узлу-серверу. 2) Нам нужен способ прикрепить сертификаты в любое время к серверу, например. всякий раз, когда мы получаем домен от наших клиентов.

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Let's Encrypt w / Greenlock Express v3

Я автор Greenlock Express, который называется Let's Encrypt для Node.js, Express и т. Д.

Я все еще нахожусь в процессе написания v3 документации (множество неработающих ссылок на примеры, которые еще не были преобразованы из v2), но установка выглядит примерно так:

require("greenlock-express")
    .init(function getConfig() {
        return {
          package: require("./package.json")
          manager: 'greenlock-manager-fs',
          cluster: false,
          configFile: '~/.config/greenlock/manager.json'
        };
    })
    .serve(httpsWorker);

function httpsWorker(server) {
    // Works with any Node app (Express, etc)
    var app = require("./my-express-app.js");

    // See, all normal stuff here
    app.get("/hello", function(req, res) {
        res.end("Hello, Encrypted World!");
    });

    // Serves on 80 and 443
    // Get's SSL certificates magically!
    server.serveApp(app);
}

Он использует http2 по умолчанию на узле v12 +, а также работает с кластером узлов, так что вы можете использовать преимущества нескольких ядер.

Он использует SNICallback для динамического добавления сертификатов на лету.

Управление сайтом

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

Просто для началафайловый плагин выглядит следующим образом:

~/.config/greenlock/manager.json:

{
    "subscriberEmail": "letsencrypt-test@therootcompany.com",
    "agreeToTerms": true,
    "sites": [
        {
            "subject": "example.com",
            "altnames": ["example.com", "www.example.com"]
        }
    ]
}

Управление ключами и сертификатами

Аналогично, плагин Key and Cert по умолчанию - файловая система-основанный (фактически основанный на certbot, с первых дней), ноесть плагины для подключения к базам данных (greenlock-store-sequelize), чтобы вы могли управлять своими сертификатами так, как вам нравится.

Плагин по умолчанию сохраняет их в ~/.config/greenlock/.

DNS-01 и HTTP-01 подключаемые модули для вызовов

Существуют подключаемые модули для различных поставщиков DNS (Name.com, NameCheap, DNSimple, GoDaddy и т. Д.), А также набор тестов, который позволяет легко написать паруобратных вызовов, которые необходимо создать самостоятельно:

API управления

Уже есть API, который я не буду здесь документировать, потому что занят (сейчас) написанием официальной документации для него, но по сути вы будете делать что-то вроде этого:

greenlock.add({
  subject: 'example.com',
  altnames: ['example.com', '*.example.com']
})

В процессе разработки находятся некоторые инструменты CLI, и Greenlock Pro, как ожидается, будет иметь пользовательский интерфейс для него, а также инструменты маршрутизации (то есть обслуживать домен X из этого каталога, прокси-домен Y дляпорт 2345 с поддержкой веб-сокетов и т. д.)

Я вернусь

Как только у меня будет больше официальных документов, я вернусь и добавлю некоторые обновления сюда.

Не стесняйтесь связаться со мной на Keypairs. Я @ coolaj86 там.

0 голосов
/ 30 октября 2019

1) Присоедините несколько SSL-сертификатов к серверу узла. 2) Нам нужен способ прикрепить сертификаты в любое время к серверу, например. всякий раз, когда мы получаем домен от наших клиентов.

Управление такой динамической конфигурацией в экземпляре действительно сложно обновлять и поддерживать. Как предложено в комментарии, перейдите к LB и поместите LB в верхнюю часть экземпляра EC2 и обработайте сертификат и интеграцию нового домена с AWS SDK.

В потоке высокого уровня будет

Присоединитьнесколько сертификатов SSL с сервером узлов

  • Поместите LB поверх каждого экземпляра, и вам не нужно будет управлять SSL на уровне экземпляра, и AWS позаботится об этом. Кроме того, вы будете экономить ресурсы ЦП, устанавливая этот шифрованный и дешифрованный груз SSL на LB.

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

  • с помощью AWS SDK создайте запрос на новый ACM
  • После утверждения сертификата обновите список сертификатов AWS LB из SDK или вручную, но лучше для автоматизации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...