2023. 3. 20. 17:12ㆍCS
HTTP(Hypertext Transfer Protocol)와 HTTPS(Hypertext Transfer Protocol Secure)는
인터넷에서 데이터를 주고받는 데 사용되는 프로토콜입니다.
하지만, 두 프로토콜은 암호화와 인증 등 보안 측면에서 차이가 있습니다.
HTTP는 기본적으로 데이터 전송 시 암호화되지 않기 때문에, 데이터가 제3자에게 노출될 가능성이 있습니다.
반면, HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화합니다.
이로 인해 제3자가 데이터를 가로채도 데이터를 이해할 수 없으며, 데이터의 무결성과 기밀성을 보장합니다.
또한, HTTPS는 서버의 신뢰성과 인증을 보장합니다.
HTTPS는 SSL 인증서를 사용하여, 클라이언트가 접속한 서버의 신뢰성을 보장합니다.
SSL 인증서는 해당 도메인의 소유자가 발급받으며, 클라이언트가 접속한 서버가 해당 도메인의 실제 소유자임을 인증합니다.
이 SSL 인증서는 쉽게 말해서 내가 접속하려고 하는 웹사이트가 안전하다는 것을 보증해주는 디지털 인증서이다.
브라우저는 SSL 인증서를 통해 해당 웹사이트가 안전하다는 것을 확인하고, 사용자가 웹사이트와의 통신을 보호하기 위해
HTTPS 연결을 사용합니다.
또한 SSL 인증서는 웹사이트의 신원 정보를 인증하고 웹사이트가 소유한 도메인과 일치하는 지 확인도 해주게 된다.
SSL 인증서를 실제로 한번 보여드리겠습니다. (Mac, iterm 기준)
iterm에서 다음과 같은 명령어를 넣어보겠습니다.
명령어는 다음과 같고 (443이 https 포트번호입니다),
$ openssl s_client -connect 웹서버 주소:443
저는 저의 블로그 도메인의 SSL 인증서를 확인해보기 위해 다음과 같이 했습니다.
$ openssl s_client -connect xpmxf4.tistory.com:443
CONNECTED(00000005)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = Thawte TLS RSA CA G1
verify return:1
depth=0 C = KR, ST = Jeju-do, L = Jeju-si, O = Kakao Corp., CN = *.tistory.com
verify return:1
---
Certificate chain
0 s:C = KR, ST = Jeju-do, L = Jeju-si, O = Kakao Corp., CN = *.tistory.com
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = Thawte TLS RSA CA G1
1 s:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = Thawte TLS RSA CA G1
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
2 s:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGYDCCBUigAwIBAgIQB9VWqZClz5H7X0BkT8Ln7TANBgkqhkiG9w0BAQsFADBe
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMR0wGwYDVQQDExRUaGF3dGUgVExTIFJTQSBDQSBHMTAe
Fw0yMzAzMDIwMDAwMDBaFw0yNDAzMzAyMzU5NTlaMF8xCzAJBgNVBAYTAktSMRAw
DgYDVQQIEwdKZWp1LWRvMRAwDgYDVQQHEwdKZWp1LXNpMRQwEgYDVQQKEwtLYWth
byBDb3JwLjEWMBQGA1UEAwwNKi50aXN0b3J5LmNvbTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAMv6D6vwlTVbCuyKAibKuH4pr5rQS5qRks5iZVQ3Xpub
//... 중략
위의 명령어를 넣게 되면 매우 길게 나오게 되고, 알아보기 조금 힘들다고 생각이 들겁니다.
출력되는 결과물은 인증서의 상세정보가 포함되어 있기 때문입니다.
중요한것은 일반적으로 SSL 인증서는 해당 웹사이트가 안전하게 운영되고 있다는 것을
나타낸다는 것을 알아가시면 좋습니다.
따라서, HTTP는 암호화와 인증 등의 보안 기능을 제공하지 않아 데이터 보안에 취약하며, HTTPS는 데이터 보안을 보장하기 위해
암호화와 인증 등의 보안 기능을 제공합니다.
결론적으로, HTTPS는 보안에 민감한 데이터 전송에 적합한 프로토콜입니다.
'CS' 카테고리의 다른 글
데이터베이스(Database) 란? (0) | 2023.03.22 |
---|---|
DNS Round Rrobin 이란? (2) | 2023.03.21 |
TCP vs UDP (0) | 2023.03.18 |
HTTP GET vs POST? (0) | 2023.03.17 |
트랜잭션의 연산 중 ROLLBACK 이란? (0) | 2023.03.16 |