https에 대한 SNI(Sever Name Indication) 문제 기록
SNI 문제를 논의하려면 먼저 가상 호스트의 개념을 소개해야 합니다.
가상 호스트에서 일반적으로 사용되는 기술은 실제 물리적 컴퓨터 호스트를 분할하여 각 장치에 물리적 저장소가 없는 개체입니다. 그러나 장치 내에서는 실제 물리적 호스트처럼 정상적으로 작동하여 IP 주소, 독립 도메인 이름 및 완전한 인터넷 서버 작업을 실현할 수 있습니다. 핵심은 가상 호스팅의 핵심 기술은 동일한 운영체제, 동일한 하드웨어 플랫폼에서 서로 간섭하지 않고 사용자에게 서로 다른 서비스를 제공하는 것입니다.
다양한 서버 소프트웨어는 Apache, nigx 등과 같은 가상 호스트 구성을 구현할 수 있습니다.
Apache 가상 호스트를 구현하는 방법에는 세 가지가 있습니다.
오늘날 인터넷이 폭발적으로 증가하면서 네트워크 보안 문제가 점점 더 주목을 받게 되었고, 이는 또한 현재 인기를 끌게 되었습니다. https의. SSL 인증서는 암호화 프로토콜인 https에 대한 가장 일반적인 솔루션입니다. 그런데 SSL 인증서 때문에 https를 사용하는데 문제가 있습니다.
문제의 원인: 서버 기능의 향상으로 인해 물리적 서버에 여러 가상 호스트를 배포하는 것이 매우 일반적인 관행이 되었습니다. 예전 HTTP 시대에는 동일한 IP 주소에서 여러 웹사이트를 이름 기반으로 호스팅하는 문제를 해결하는 것이 그리 어렵지 않았습니다. 클라이언트가 특정 웹 사이트를 요청하면 요청한 도메인 이름이 http 헤더에 호스트 헤더로 배치되므로 서버는 도메인 이름에 따라 어떤 도메인 이름 서비스로 요청을 보낼지 알 수 있고 일치하는 웹 사이트를 전송할 수 있습니다. 클라이언트. 그러나 이 방법은 SSL 핸드셰이크 중에 호스트 정보가 없기 때문에 https에는 유효하지 않습니다. 따라서 서버는 일반적으로 구성에서 사용 가능한 첫 번째 인증서를 반환하므로 다른 가상 호스트의 서비스는 다른 인증서를 사용할 수 없게 됩니다. 그러나 실제로 인증서는 일반적으로 서비스에 해당합니다.)
이 문제를 해결하기 위해 중국어 이름이 Server Name Indication인 SNI는 단일 IP 주소에 여러 개의 SSL 인증서를 전달할 수 있는 SSL/TLS 프로토콜의 확장입니다. . SNI는 SSL 핸드셰이크에 HTTP 헤더를 삽입하고 요청된 호스트 정보를 제출하여 서버가 올바른 도메인으로 전환하고 해당하는 올바른 인증서를 반환할 수 있도록 하여 구현됩니다.
SNI(Server Name Indication)는 RFC 4366에 정의되어 있습니다. SSL/TLS를 개선하기 위해 사용되는 기술로 SSLv3/TLSv1에서 활성화됩니다. 이를 통해 클라이언트는 SSL 핸드셰이크 요청(구체적으로 클라이언트가 발행한 SSL 요청의 ClientHello 단계)을 시작할 때 요청된 호스트 정보를 제출할 수 있으므로 서버는 올바른 도메인으로 전환하고 해당 인증서를 반환할 수 있습니다. TLSv1.2(OpenSSL 0.9.8)부터 지원됩니다.