SSL, TLS, HTTPS의 차이점은 무엇인가요?

이 분야의 용어가 헷갈려요. SSL, TLS, HTTPS란 무엇인가요? 이들 간의 차이점은 무엇인가요?

질문에 대한 의견 (2)
해결책

TLS는 SSL의 새로운 이름입니다. 즉, SSL 프로토콜은 버전 3.0에 이르렀고, TLS 1.0은 'SSL 3.1&39;입니다. 현재 정의된 TLS 버전은 TLS 1.1과 1.2입니다. 각각의 새 버전은 몇 가지 기능을 추가하고 일부 내부 세부 사항을 수정합니다. 우리는 때때로 'SSL/TLS'라고 말합니다.

HTTPS는 HTTP-내-SSL/TLS입니다. SSL(TLS)은 두 호스트 간에 임의의 바이너리 데이터를 위한 안전한 양방향 터널을 설정합니다. HTTP는 요청을 보내고 응답을 받기 위한 프로토콜로, 각 요청과 응답은 세부 헤더와 일부 콘텐츠로 구성됩니다. HTTP는 임의의 바이너리 데이터를 위한 양방향 터널을 통해 실행되도록 되어 있으며, 해당 터널이 SSL/TLS 연결인 경우 전체 터널을 ․HTTPS․라고 합니다.

약어를 설명합니다:

  • 'SSL'은 '보안 소켓 계층'을 의미합니다. 이는 프로토콜의 첫 번째 버전인 넷스케이프(Netscape)의 발명가들이 만든 용어입니다(이 회사는 나중에 AOL에 인수되었습니다).
  • TLS]1는 '전송 계층 보안'을 의미합니다. 넷스케이프와의 법적 문제를 피하기 위해 이름을 변경하여 프로토콜이 가 될 수 있도록 했습니다(그리고 RFC로 게시되었습니다). 또한 이 프로토콜은 인터넷 기반 소켓뿐만 아니라 모든 양방향 바이트 스트림에서 작동한다는 아이디어를 암시합니다.
  • HTTPS는 [HyperText Transfer Protocol Secure]를 의미해야 하는데, 이는 문법적으로 올바르지 않습니다. 지겨워질 대로 지겨워진 사람을 제외하고는 아무도 이 번역을 사용하지 않습니다. 'HTTPS&39;는 SSL을 의미하는 S가 붙은 'HTTP&39;로 생각하는 것이 더 낫습니다. 다른 프로토콜 약어들도 같은 방식으로 만들어졌는데, 예를 들어 SMTPS, IMAPS, FTPS 등은 모두 일부 SSL/TLS 내에서 실행하여 '보안을 확보'한 베어 프로토콜입니다.
해설 (8)

SSL과 TLS는 두 당사자 간에 개인 정보 보호와 데이터 무결성을 제공하는 것을 목표로 하는 프로토콜로(RFC 2246 참조), 신뢰할 수 있는 통신 프로토콜(일반적으로 TCP)을 통해 실행되도록 설계되었습니다. TLS 사양에서는 소켓에 대해 언급하지 않지만, SSL/TLS의 설계는 애플리케이션이 기존 TCP 소켓과 거의 유사하게 사용할 수 있도록 이루어졌습니다(예: Java의 SSLSocketSocket을 확장합니다)(사용성 측면에서는 약간의 차이가 있지만). HTTPS는 SSL/TLS를 통한 HTTP로, SSL/TLS 연결이 먼저 설정된 다음 이 SSL/TLS 연결을 통해 일반 HTTP 데이터가 교환됩니다. 이를 위해 SSL 또는 TLS를 사용할지 여부는 브라우저와 서버의 구성에 따라 다릅니다(일반적으로 SSLv2, SSLv3 또는 TLS 1.x를 허용하는 옵션이 있음). HTTP와 SSL/TLS가 HTTPS를 형성하는 방법에 대한 자세한 내용은 RFC 2818에 나와 있습니다. SSL과 TLS의 차이점에 관해서는 StackOverflow와 ServerFault에서 비슷한 질문에 대해 작성한 다음 두 가지 답변에 관심이 있을 수 있습니다:

  • SSL과 TLS의 차이점 [Stackoverflow]
  • SSL과 TLS의 정확한 프로토콜 수준 차이점은 무엇인가요? [서버폴트] TLSv1.0을 SSLv3.1로 간주 할 수 있습니다 (실제로는 그렇게됩니다. 교환되는 레코드 내에서). TLSv1.0과 TLSv3.1을 비교하는 것이 더 쉬울 뿐입니다. 과 TLSv1.1 및 TLSv1.2를 비교하는 것이 더 쉬운데, 이는 모두 IETF 내에서 편집되었기 때문입니다. 내에서 편집되었으며 거의 동일한 구조를 따르기 때문입니다. SSLv3는 다른 기관(넷스케이프)에서 편집하고 있기 때문에 조금 더 어렵습니다. 차이점을 찾아내세요.

    차이점을 찾아보세요; 다음은 몇 가지 차이점이지만 모두 나열할 수는 없을 것 같습니다:

    ClientHello 메시지(핸드셰이크를 시작하기 위해 클라이언트가 보내는 첫 번째 메시지)에서 버전은 SSLv3의 경우 {3,0}, {3,1}입니다. TLSv1.0, TLSv1.1의 경우 {3,2}입니다. ClientKeyExchange가 다릅니다. MAC/HMAC이 다릅니다(TLS는 HMAC을 사용하는 반면 SSL은 이전 버전의 HMAC을 사용합니다). 키 파생이 다릅니다. 클라이언트는 SSLv3에서 SSL/TLS 완료 메시지를 전송한 후 바로 애플리케이션 데이터를 전송할 수 있습니다. TLSv1에서는 서버가 서버의 완료 메시지를 기다려야 합니다. 암호 제품군 목록이 다릅니다(일부 암호 제품군은 동일한 ID 번호를 유지하면서 SSL*에서 TLS*로 이름이 변경되었습니다). 새로운 재협상 확장에 관한 차이점도 있습니다. 일반적으로 암호화 제품군을 적절히 선택한다면 버전이 높을수록 또는 SSL/TLS가 높을수록 더 안전합니다(TLS의 상위 버전은 더 나은 암호화 제품군을 사용할 수도 있습니다). (SSLv2는 안전하지 않은 것으로 간주됩니다.) 또한 SSL은 IETF 범위에 속하지 않습니다. 예를 들어, [TLS 재협상 수정]은 SSLv3에 맞게 개조되어야 했습니다3(어쨌든 SSL/TLS 스택은 업데이트해야 했지만). 이 답변에도 관심이 있을 수 있습니다:

  • TLS/LDAP 또는 TLS/HTTP 연결이 설정되면 유선에서는 어떤 일이 발생하나요?[스택오버플로우] 일부 사람들은 SSL과 TLS를 '연결 시 SSL/TLS'와 (애플리케이션 프로토콜을 사용한 대화 후) 'TLS로 업그레이드'의 차이로 반대하기도 합니다. 이러한 답변 중 일부는 상대적으로 높은 추천 수를 받았지만 이는 잘못된 것입니다. 이러한 실수는 Microsoft Outlook과 같은 특정 애플리케이션이 SMTP/IMAP 구성에 대해 'SSL'과 'TLS'라는 두 가지 구성 옵션을 제공하지만 실제로는 '연결 시 SSL/TLS'와 'TLS로 업그레이드'를 의미한다는 사실에 의해 전파됩니다. (JavaMail 라이브러리도 마찬가지라고 생각합니다.) STARTTLS에 대해 이야기하는 RFC는 TLS가 이미 공식 RFC였을 때 작성되었기 때문에 연결을 TLS로 업그레이드하는 것에 대해서만 이야기합니다. 실제로 메일 클라이언트의 구성을 조정하여 TLS 대신 SSLv3를 사용하도록 강제하는 경우(일반적으로 권장하지는 않음), SSL/TLS의 버전 및/또는 암호 제품군보다는 작동 모드에 관한 것이기 때문에 SSLv3 연결에서 STARTTLS를 사용하여 SSL/TLS로 업그레이드할 수 있을 가능성이 있습니다. 또한 HTTP 프로토콜 내에서 SSL/TLS로의 업그레이드가 수행되는 HTTP 변형도 있습니다(LDAP/SMTP의 STARTTLS와 유사). 이는 RFC 2817에 설명되어 있습니다. 제가 아는 한, 이것은 거의 사용되지 않습니다(브라우저에서 https://에서 사용하는 것과는 다릅니다). 이 RFC의 주요 관련 부분은 HTTP 프록시 서버의 CONNECT에 대한 섹션입니다(HTTP 프록시 서버에서 HTTPS 연결을 릴레이하는 데 사용됨).
해설 (4)

SSL VS TLS

SSL과 TLS라는 용어는 종종 서로 같은 의미로 사용되거나 함께 사용되기도 하지만(TLS/SSL), 사실 하나는 다른 하나의 전신이며, SSL 3.0은 TLS 1.0의 기반이 되었기 때문에 SSL 3.1이라고 부르기도 합니다.

더 안전한 SSL과 TLS 중 어떤 것이 더 안전할까요?

보안 측면에서는 둘 다 동등하게 안전하다고 간주됩니다.

가장 큰 차이점은 SSL 연결은 보안으로 시작하여 보안 통신으로 바로 진행되는 반면, TLS 연결은 먼저 서버에 대한 안전하지 않은 "안녕하세요"로 시작하여 클라이언트와 서버 간의 핸드셰이크가 성공한 후에야 보안 통신으로 전환된다는 점입니다. 어떤 이유로든 TLS 핸드셰이크가 실패하면 연결이 생성되지 않습니다.

(SSL 및 TLS와 HTTP 비교)

HTTP 프로토콜은 데이터를 요청하고 수신하는 데 사용되며, SSL은 중간자 공격자가 데이터를 쉽게 얻을 수 없도록 http 프로토콜 요청 및 수신 활동을 암호화하는 보안 SSL에 불과합니다.

HTTP에 SSL이나 TLS를 사용하지 않는 경우

에 SSL 또는 TLS를 모두 사용하지 않으면 웹 서버와의 연결이 암호화되지 않고 모든 데이터가 일반 텍스트로 전송되어 중간자 공격자가 해당 데이터를 입수하여 볼 수 있습니다.

따라서 SSL 또는 TLS를 사용해야 합니다.

둘 다 동일하지만 TLS가 더 확장성이 뛰어나며 향후 더 많은 지원을 받기를 희망합니다. 그리고 TLS는 이전 버전과 호환됩니다.

해설 (3)