synchronized ConnectionInfo setSslSessionDetails(SSLSession session) {
            this.sslCipherSuite = session.getCipherSuite();
            this.sslProtocol = session.getProtocol();
            this.sslSessionId = session.getId();
            if (session instanceof ExtendedSSLSession) {
                ExtendedSSLSession extendedSession = (ExtendedSSLSession) session;
                this.sslSniServerNames = extendedSession.getRequestedServerNames();
            }
            try {
                this.sslPeerSubject = session.getPeerPrincipal().getName();
                X509Certificate peerCertificate = (X509Certificate) session.getPeerCertificates()[0];
                this.sslPeerNotBefore = peerCertificate.getNotBefore();
                this.sslPeerNotAfter = peerCertificate.getNotAfter();
                this.sslSubjectAlternativeNames = X509CertificateUtils.getSubjectAlternativeNames(peerCertificate).stream()
                        .map(SubjectAlternativeName::getValue)
                        .toList();
                this.sslPeerIssuerSubject = peerCertificate.getIssuerX500Principal().getName();
                this.sslPeerEncodedCertificate = peerCertificate.getEncoded();
            } catch (SSLPeerUnverifiedException | CertificateEncodingException e) {
                // Throw if peer is not authenticated (e.g when client auth is disabled)
                // JSSE provides no means of checking for client authentication without catching this exception
            }
            return this;
        }
Protocol layers are connected through each {@link Connection}'s {@link EndPoint} reference.
This methods iterates through the endpoints recursively to find the underlying socket endpoint.
container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyConnectionLogger.java