$ssl_preread_protocol 변수로 클라이언트 SSL/TLS 버전 확인하기
NGINX의 주요 기능 중 하나는 $ssl_preread_protocol 변수입니다. 이 변수를 사용하면 TCP(스트림) 프록시를 사용하여 트래픽을 전달할 때 SSL/TLS 및 다른 프로토콜을 구별할 수 있습니다. 예를 들어 SSL/TLS 및 SSH 서비스를 같은 포트에서 실행하여 방화벽 제한을 피하고 싶을 때 이 기능이 유용합니다.
이러한 기능은 NGINX Plus에서도 제공됩니다.
목차
1. $ssl_preread_protocol 변수란?
2. $ssl_preread_protocol 사용 시기와 방법
3. NGINX의 최신 버전
4. 더보기
1. $ssl_preread_protocol 변수란?
$ssl_preread_protocol
은 NGINX의 내장 변수로서, NGINX가 클라이언트와의 SSL/TLS 연결에서 사용하는 프로토콜 버전을 담고 있습니다. ssl_preread on;
지시어를 사용하면 이 변수를 사용하여 클라이언트가 요청한 SSL/TLS 버전을 사전에 확인할 수 있습니다. 이 정보는 NGINX가 SSL/TLS 트래픽을 적절한 서버로 라우팅하는데 도움이 될 수 있습니다.
2. $ssl_preread_protocol 사용 시기와 방법
HTTP 또는 stream 모듈을 사용하여 SSL/TLS 트래픽을 종료하고 복호화할 때, $ssl_protocol (http, stream) 변수는 클라이언트가 사용한 SSL 또는 TLS 버전을 캡처합니다. 그러나 때로는 암호화 트래픽을 복호화하지 않고 간단한 TCP 프록시나 로드 밸런서를 구현하기 위해 stream 모듈을 사용하여 SSL/TLS 트래픽을 단순히 전달하고 싶을 수도 있습니다.
stream_ssl_preread 모듈은 SSL이나 TLS 연결의 초기 ClientHello 메시지를 검사하고 연결을 관리하는 데 사용할 수 있는 여러 값을 추출합니다. 1.15.2 릴리스에서 추가된 $ssl_preread_protocol 변수는 ClientHello 메시지의 client_version 필드에서 최신 SSL/TLS 버전 번호를 캡처합니다. 만약 ClientHello 메시지에 supported_versions 확장이 포함되어 있다면, 해당 변수는 TLSv1.3으로 설정됩니다.
만약 연결이 TLS 또는 SSL의 버전을 사용하지 않는다면, $ssl_preread_protocol 변수는 비어 있게 됩니다. 이는 해당 연결이 SSL/TLS 가 아닌 SSH와 같은 다른 프로토콜을 사용하고 있음을 나타냅니다.
다음 구성 스니펫은 $ssl_preread_protocol 변수를 map 블록에서 사용하여 연결에 사용되는 프로토콜에 적합한 upstream 그룹의 이름을 $upstream 변수로 설정합니다. 그런 다음 proxy_pass 지시문은 선택된 upstream 그룹으로 요청을 전달합니다. $ssl_preread_protocol 변수가 작동하려면 ssl_preread on 지시문이 server 블록에 포함되어야 함에 유의하세요.
stream {
upstream ssh {
server 192.0.2.1:22;
}
upstream web {
server 192.0.2.2:443;
}
map $ssl_preread_protocol $upstream {
default ssh;
"TLSv1.2" web;
}
# SSH and SSL on the same port
server {
listen 443;
proxy_pass $upstream;
ssl_preread on;
}
}
구성이 효과적으로 작동하려면 클라이언트는 기본 포트 22 대신 포트 443에서 SSH 서버에 접속해야 합니다. 예를 들어, MacOS와 Linux에 내장된 SSH 클라이언트를 사용하면 -p 플래그를 사용하여 포트를 변경할 수 있습니다.
$ ssh ssh-server-ip-address -p 443
3. NGINX의 최신 버전
NGINX의 최신버전은 항상 공식 저장소의 mainline 브랜치에서 이용이 가능합니다.
4. 더보기
NGINX 오픈 소스의 새로운 기능, 추가 개선 사항 및 버그 수정 등과 같은 전체 목록은 NGINX change log를 참조하세요.
NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 문의하십시오.
사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.