<div dir="ltr">Не смог найти в документации, как мне в _одном_ server{} настроить более 1 сертификата (SNI). Это возможно?</div><div class="gmail_extra"><br><br><div class="gmail_quote">1 ноября 2013 г., 16:14 пользователь Vladimir Skubriev <span dir="ltr"><<a href="mailto:vladimir@skubriev.ru" target="_blank">vladimir@skubriev.ru</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>01.11.2013 14:07, Никита Кардашин
пишет:<br>
</div><div class="im">
<blockquote type="cite">
<div dir="ltr">Так, я, видимо, не очень правильно описал проблему.
Попробую еще раз:
<div><br>
</div>
<div>- Есть домены:</div>
<div>domain1.tld</div>
<div>domain2.tld</div>
<div>domain3.tld</div>
<div><br>
</div>
<div>Сами главные домены хостятся где-то в другом, отличном от
нашего сервера, месте. Для каждого из них есть wildcard
SSL-сертификат.</div>
<div><br>
</div>
<div>На нашем сервере хостятся приложения, доступные по
поддоменам этих доменов (app1.domain2.tld, app10.domain3.tld,
etc). Для каждого приложения создан конфиг в sites-enabled с
описанием сервера (где задается и нужный SSL-сертификат, в
зависимости от того, в каком домене находится приложение).
Доступны они только по SSL (по сертификату *.domain.tld). Но
иногда приложения удаляются, а ссылки на них где-то живут. </div>
<div><br>
</div>
<div>Мне нужно каким-то образом реализовать возможность
редиректить все запросы к адресам а-ля <a href="https://appX.domainX.tld/" target="_blank">https://appX.domainX.tld/</a>,
в случае, если приложение уже не существует (т.е. сервер
appX.domainX.tld не описан в конфиге nginx).</div>
<div><br>
</div>
<div>Пока домен был один - я эту проблему решал просто,
определил в конфиге один сервер с признаком default и там уже
в location / осуществлял редирект на нужный сайт. Все
прекрасно работало.</div>
<div><br>
</div>
<div>А теперь сайтов стало три. В описании default-сервера я
могу задать только одну пару сертификат:ключ, соответственно,
те, кто придет по appX.domainX.tld (в случае, если домен
отличается от того, чей сертификат прописан) в default-сервер
получат в браузере ошибку (и не получат редирект).</div>
<div><br>
</div>
<div>Прописать для каждого из доменов сервер с server_name
*.domainX.tld я тоже не могу, т.к. тогда туда пойдут не только
запросы к несуществующим приложениям, а вообще ВСЕ запросы
(т.е. в приложение никто не попадет).</div>
<div><br>
</div>
<div>Т.е. проблема моя не в том, что мне нужно иметь несколько
SSL-сервисов на одном IP (это-то прекрасно работает, тут
проблем нет), а в том, что мне нужно каким-то образом иметь
несколько default-серверов с поддержкой SSL (либо иметь
возможность задавать приоритеты серверам, чтобы запрос всегда
попадал в более точный сервер (appX.domainX.tld), а не в
wildcard *.domainX.tld).</div>
<div><br>
</div>
<div>Как мне из этой ситуации выйти?</div>
</div>
</blockquote></div>
Из документации<br>
<br>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px">Более общее решение для работы
нескольких HTTPS-серверов на одном IP-адресе —<span> </span></span><a href="http://en.wikipedia.org/wiki/Server_Name_Indication" style="font-family:Georgia,serif;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:justify;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">расширение
Server Name Indication протокола TLS</a><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px"><span> </span>(SNI, RFC 6066), которое
позволяет браузеру передать запрашиваемое имя сервера во время SSL
handshake, а значит сервер будет знать, какой сертификат ему
следует использовать для соединения. Однако, поддержка SNI
браузерами ограничена. Сейчас это поддерживается браузерами
начиная со следующих версий:<br>
</span><br>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px">
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px">Другим способом является
использование wildcard-сертификата, например<span> </span></span><code>*.<a href="http://example.org" target="_blank">example.org</a></code><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px">. Такой сертификат защищает все поддомены
указанного домена, но только на заданном уровне. Под такой
сертификат подходит<span> </span></span><code><a href="http://www.example.org" target="_blank">www.example.org</a></code><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px">, но не подходят<span> </span></span><code><a href="http://example.org" target="_blank">example.org</a></code><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px"><span> </span>и<span> </span></span><code><a href="http://www.sub.example.org" target="_blank">www.sub.example.org</a></code><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px">. Два вышеуказанных способа можно комбинировать.
Сертификат может одновременно содержать и точное, и wildcard
имена в поле SubjectAltName, например<span> </span></span><code><a href="http://example.org" target="_blank">example.org</a></code><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px"><span> </span>и<span> </span></span><code>*.<a href="http://example.org" target="_blank">example.org</a></code><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:justify;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Georgia,serif;word-spacing:0px">.</span><br>
Боюсь что это не может быть, т.к. не могу все клиенты поддерживать
SNI.<br>
<br>
<br>
</span><br>
<pre cols="72">--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор
Скубриев Владимир
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Россия, Ростовская область, г. Таганрог
тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: <a href="http://skubriev.ru" target="_blank">skubriev.ru</a> </pre>
</div>
<br>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>With best regards,<br>differentlocal (<a href="http://www.differentlocal.ru">www.differentlocal.ru</a> | <a href="mailto:differentlocal@gmail.com">differentlocal@gmail.com</a>),<br>
System administrator.
</div>