[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [offtopic] ценнник на IP-адреса



Ivan Shmakov -> debian-russian@lists.debian.org  @ Wed, 28 Nov 2012 14:58:10 +0700:

 >>>> SNI = Service Name Indication подробности в гугле

 >>> У меня запущен Nginx на localhost:4443 и Lighttpd на localhost:5443
 >>> — каждый со своим ключем и сертификатом.  Я хочу сделать «front-end»
 >>> на Apache, :443, чтобы в зависимости от имени
 >>> (https://foo.example.org/, https://bar.example.org/) соединение
 >>> устанавливалось с тем или иным HTTPS-сервером.  Как SNI мне в этом
 >>> случае поможет?

 >> Это не та задача, которую решает SNI.  Вы хотите
 >> т. н. "https-форвард".

 IS> 	На деле, мне требуется, чтобы по https://foo.example.org/,
 IS> 	https://bar.example.org/ были доступны различные сервера
 IS> 	(возможно, обслуживаемые различными администраторами), доступные
 IS> 	извне через один и тот же IP-адрес — что имеет смысл, главным
 IS> 	образом, в случае IPv4.  (Напротив, при использовании IPv6
 IS> 	выделить отдельные адреса для этих серверов не составит труда.)

 >> Но можно сделать подобное, если подойти иначе: SNI приводит клиента
 >> на нужный виртуалхост апача, далее проксируете куда нужно.
 >> Разумеется, ключи и сертификаты виртуалхостов нужно передать Апачу,
 >> иначе он не сможет провести хэндшейк,

 IS> 	Именно так.  Однако, тем самым, в «цепи доверия» появляется
 IS> 	«лишняя сущность» — администратор proxy.

... он же, по совместительству, root того хоста, на котором крутятся
бэкэнды (поскольку они показываются на localhost).  То есть имеет
непосредственный доступ к секретным ключам от сертификатов бэкэндов.  Ты
все еще хочешь ему не доверять?

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

Кстати, я сейчас не то чтобы вспомню точно протокол TLS, а тем более -
где там SNI появляется.  Не исключено, что можно пробросить коннект.
Явно указание имени хоста должно появиться в клиентском запросе ДО
начала использования ключей и по-хорошему, даже конкретных шифрсьютов
(потому что сертификаты-то разные), то есть буквально в hello-пакете.  В
этот момент шифрование еще не пошло, и прокинуть соединение, в общем,
можно.


Reply to: