У меня 100% веб-сервер https, который выполняет пересмотр TLS.Это очень полезно для того, чтобы пользователи могли зайти на сайт и получить несколько хороших страниц, прежде чем нажать кнопку входа в систему и попросить сертификат клиента.Ниже приведена часть кода, которая выполняет повторное согласование строки 213-236 класса X509Cert
import org.jboss.netty.handler.ssl.SslHandler
val sslh = r.underlying.context.getPipeline.get(classOf[SslHandler])
trySome(sslh.getEngine.getSession.getPeerCertificates.toIndexedSeq) orElse {
if (!fetch) None
else {
sslh.setEnableRenegotiation(true) // todo: does this have to be done on every request?
r match {
case UserAgent(agent) if needAuth(agent) => sslh.getEngine.setNeedClientAuth(true)
case _ => sslh.getEngine.setWantClientAuth(true)
}
val future = sslh.handshake()
future.await(30000) //that's certainly way too long.
if (future.isDone && future.isSuccess)
trySome(sslh.getEngine.getSession.getPeerCertificates.toIndexedSeq)
else
None
}
}
Теперь я ожидал, что, как только кто-то аутентифицируется с помощью сертификата клиента X509, сеанс будетНемного времени и помните эту цепочку сертификатов - скажем, 10 минут или больше, и в любом случае, по крайней мере, 1 минуту.Действительно, именно поэтому у меня есть возможность вызывать вышеупомянутый метод с переменной «fetch», установленной в false.Я надеюсь, что если кто-то подтвердил подлинность, соединение не должно быть пересмотрено.
Но я заметил, что в большинстве браузеров мне нужно каждый раз вызывать sslh.handshake (), если я хочу получить сеанс и вернуть сертификаты X509.Если для «fetch» задано значение «false», то в большинстве случаев мне возвращается «Нет».
Это нормально, или я что-то не так делаю?
PS.
- приведенный выше код является частью реализации протокола WebID
- Это использует netty 3.2.5Final.Я также попытался с 3.2.7Final без особой удачи.
- Поэтому мне пришлось изменить код текущей службы , выполняющей вышеуказанный код , чтобы она всегда вызвала рукопожатие (см. коммит ) Но это не дает мне такой гибкости, как я надеялся.