브라우저가 https에서 프로토콜로 HTTP/1을 사용하도록하려면 HTTP/2 사용을 차단하는 데 문제가 있습니다. TLS MITM은 문제가되지 않습니다. NFQUEUE와 같은 usermode 패킷 필터링은 처리 오버 헤드에 따라 최대로 고려 될 수 있습니다.방화벽 수준에서 HTTP/2를 차단하십시오.
ALPN RFC를 읽으면 ALPN이 포함 된 ClientHello가 표시 될 때 경고 응답을 제공하거나 연결을 끊을 지 여부가 명확하지 않습니다. http/2는 ALPN없이 브라우저를 다시 시도합니다.
정확하게 이해하면 ClientHello를 변경하면 해당 패킷에 대한 MAC이 무효화되므로 서버가 ServerHello로 응답 할 때 체크섬 오류가 발생하므로 ClientHello를 수정하는 것이 좋습니다.
차단 된 핸드 셰이크의 동작은 w.r.t.입니다. ALPN은 TLS 버전 대체 (fallback) 처리와 동일합니다 (예 : TLS_FALLBACK_SCSV?
EDIT : openssl의 t1_lib.c에 따라 서버가 ALPN에 대해 알지 못하면이를 무시합니다. 따라서 서버가 ALPN을 포함하는 ClientHello에 대해 Alert를 반환하면 클라이언트가 TLS1.2를 지원하지 않기 때문에 클라이언트에 "경고"이외의 "ALPN없이 다시 시도하십시오"라는 신호를 보낼 수 없습니다 TLS1.1을 시도합니다.
어떤 종류의 방화벽입니까? 이것이 단순한 패킷 필터라면 HTTP/2 차단에 성공하지 못할 것입니다. 그러나 어쨌든 컨텐트를 검사하지 않기 때문에 차단을위한 용도가 없습니다. 이것이 SSL 트래픽을 검사 할 수있는 방화벽 인 경우 man-in-the-middle으로 작동하므로 ALPN 확장을 자동으로 제거하여 HTTP/1.x로 다운 그레이드 할 수 있습니다. 그 외에도 security.stackexchange.com 또는 serverfault.com에서이 주제와 관련된 주제를 다루고 있습니다. –
왜이 작업을 수행 하시겠습니까? 더 나은 대안이있을 수 있습니다. 또한 인바운드 또는 아웃 바운드 연결에 대해 이야기하고 있습니까? –
TLS MITM을 배제하기 위해 질문을 편집했습니다. 이것은 아웃 바운드 방화벽을위한 것입니다. – patraulea