2016-04-16 3 views
4

Я успешно установил Let's Encrypt SSL certs на экземпляр домена (на Ubuntu 14.4), но теперь я хочу установить те же сертификаты на другой виртуальный экземпляр для того же домена.Давайте зашифруем SSL-сертификаты для того же домена, несколько экземпляров

Вопрос: С несколькими виртуальными экземплярами для того же домена, следует ли мне просто копировать сертификаты из начального начального (используя инструменты Let's Encrypt), или есть другой лучший способ?

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

В настоящее время я использую сертификаты, которые работают.

ответ

0

Я нахожу вопрос очень интересным с точки зрения общего понимания сертификатов SSL/TLS. Я лично не вижу общей проблемы при совместном использовании одного и того же сертификата SSL/TLS на нескольких компьютерах или виртуальных экземплярах. Единственная проблема может существовать только в некоторых свойствах сертификата, например объекта Alternate Name (DNS Name) сертификата (я имею в виду такие параметры).

Раздел 3.1 (Сервер идентификация) из RFC2818:

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

...

Если SubjectAltName расширение типа dNSName присутствует, что ДОЛЖНО использоваться как идентификатор. В противном случае необходимо указать (наиболее конкретное) общее поле имени поля Subject в сертификате. Хотя использование Common Name является существующей практикой, оно устарело , и сертификационным органам рекомендуется использовать dNSName .

Единственная проблема заключается в том, что Let's Encrypt, похоже, еще не поддерживает подстановочные сертификаты (см. FAQ). Я не уверен, что ограничение все еще существует, и вы действительно не можете создать Let's Encrypt with Subject Alternative Name (``), например DNS Name = www.yourdomain.com и DNS Name = *. Yourdomain.com. Таким образом, точный ответ на ваш вопрос может зависеть от свойств сертификата.

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

+0

Вы можете разместить до 100 доменов в сертификате, но без подстановочных знаков. Мне это кажется достаточно - он просто заставляет вас перечислять домены, которые в большинстве случаев для меня являются вариациями www.example.com, example.com. –

+0

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

+0

@CarsonCole: Не могли бы вы разместить URL-адрес на двух серверах или URL-адресах сертификата, который вы используете? Я хочу сказать, что нужно знать более подробную информацию о сертификате, особенно знать альтернативное имя субъекта. О проблеме с кешем сеанса. Я бы порекомендовал вам сделать трассировку, используя Wireshark, где тот же клиент делает подключение к серверу в первый раз, а затем позже во второй раз. Вы увидите, что клиент отправит идентификатор сеанса из первого соединения. Затем вы можете проверить трассировку соединения со вторым сервером. Будет ли отправлен сеанс ID1? Что такое server2? – Oleg

0

Да, это возможно. Есть как минимум два варианта:

  • Run certbot в ручном режиме

    ./certbot-auto certonly --manual -d example.com 
    

    в этом случае certbot требует случайного файла обслуживаться из .well-known/acme-challenge/, например,:

    http://example.com/.well-known/acme-challenge/-Y5pUBNKdx5GKSloP3RifHzUW3NT9xt1UAloNkHz7wc 
    

    Теперь вы можете распространять оспариваемый файл для всех серверов или создать переписывают из всех ваших сайтов на одном сервере вызов:

    rewrite ^/.well-known/acme-challenge/(.*)$ http://acme.example.com/$1 redirect; 
    

    acme.example.com должен быть подан от одного сервера с корнем указывающей до /tmp/certbot/public_html/ (или там, где вы будете хранить запрограммированные файлы).

    Посмотрите на hooks in certbot manual, чтобы сценарий этой процедуры.

  • Использование DNS-запроса. В этом случае вам будет предложено добавить TXT запись в ваш DNS для домена example.com:

    _acme-challenge.example.com. 300 IN TXT "gfj9Xq...Rg85nM" 
    

    Опять же, вы можете автоматизировать этот using hooks--manual-auth-hook, --manual-cleanup-hook.

Смежные вопросы