일반적으로 CA를 끼고 하는 인증과 https 통신과정은 다 이해를 했다고 생각 했는데 막상 openSSL 로 개인키와 인증서를 생성해서
테스트 서버를 구동하다보니 몇가지 의문점이 생겨서 고수님들께 몇가지 질문을드리려고 합니다.
1. 도대체 client(browser)는 서버로부터 받은 인증서를 어떻게 복호화 하는가?
CA에게 인증받은 사이트의 https 통신은 다음의 일련의 과정을 거치는 것으로 알고 있습니다.
(1)일반적으로 CA의 개인키로 암호화된 인증서(사이트 정보 + 사이트의 공개키)는 서버에서 가지고 있음
(2)브라우져는 공인된 CA의 공개키를 가지고 있음
(3)client 요청이 들어오면 사이트의 인증서를 서버가 client에게 전송 시킴
(4)client는 공인된CA의 공개키로 CA의 개인키에 의해서 암호화된 사이트의 인증서(사이트정보 + 사이트의 공개키)를 복호화
(5)CA의 공개키로 복호화가 되었으므로 신뢰성을 확인하고 복호화된 사이트의 공개키로 HTTPS 통신 제반요건 확보
대략적으로 위와 같은 순서체계로 진행되는것으로 알고 있습니다..
문제는 서버가 자체 Root CA가 되어 인증서를 만들경우 CA에게 인증받은것이 아니기에 브라우져(client)는 CA의 공개키가 당연히 없는상태에서
client는 사설인증서로 구축된 서버에 접속했을때 똑같이 사설인증서를 전송받는걸로 알고 있습니다.
문제는 도대체 이 사이트 인증서를 어떻게 복호화 하는지요?
사설로 ROOT CA 인 사이트에 접속했을때는 공개키도 같이 서버로부터 전송을 받게 되는 구조 인가요? 그렇지 않고서야 위(4)번부터 어떻게 진행이
되는지 궁금 합니다. 아무리 생각해도 답이 안나와서 고수님들의 지도편달 부탁 드립니다.
Ŭ¶óÀ̾ðÆ®¿¡¼ ¼¹ö¿¡ Á¢¼ÓÇÏ¸é ¾Ë¼ö¾ø´Â ÀÎÁõ¼°¡³ª¿Ã°Å°í¿ä ±× ÀÎÁõ¼¸¦ Ŭ¶óÀ̾ðÆ®¿¡ ¼³Ä¡ÇÏ½É °ø°³Å°°¡ ºê¶ó¿ìÀú¿¡ »ý¼ºµÇ°í ±×°É·Î µ¥ÀÌÅÍ º¹È£ÈÇÏÁÒ
±Ùµ¥ ±× ÀÎÁõ¼´Â ¼¹öÀÇ °³ÀÎÅ°·Î ¾ÏÈ£È µÈ°Çµ¥ Ŭ¶óÀÌ ¾ðÆ® Ãø¿¡¼ ¾î¶»°Ô º¹È£È¸¦ ½ÃÅ°³ª¿ä?
À§¿¡¼ ¸»¾¸ÇϽŠ'±× ÀÎÁõ¼¸¦ Ŭ¶óÀ̾ðÆ®¿¡ ¼³Ä¡ÇϽÉ' À̶ó´Â Àǹ̸¦ Àß ¸ð¸£°Ú½À´Ï´Ù ¤Ð¤Ð
°øÀÎca´Â °í¹Î¿¡¼ »©¼¼¿ä ¤¾
À¯Æ©ºê µ¿¿µ»óÀ¸·Î ¼³¸íÇØÁÖ´Â°É º¸½Ã¸é ÀÌÇØ°¡ Á» µÉ²¨¿¡¿ä.
¸ÕÀú HTTPS°°Àº°Å¿¡ ¾²ÀÌ´Â ¹æ½ÄÀº Asymmetric Encryption À̶ó°í Çؼ ÀÎÄÚµù Å°¿Í µðÄÚµù Å°°¡ ´Ù¸¨´Ï´Ù. ÇÏÁö¸¸ ÀÎÄÚµù Å°·Î µðÄÚµù Å°¸¦ ¸¸µé ¼ö ¾ø¾î¿ä.
±×¸®°í Åë½ÅÀÌ ½ÃÀÛÇϱâ Àü¿¡ ¸ÕÀú ¼Ò°³, ÀÎÁõ, È®ÀÎ ÀÌ·¸°Ô ¼¼°¡Áö¸¦ ¼·Î ÇÕ´Ï´Ù. ±×³É º»ÀÎÀÌ ¸¸µç ÀÎÁõ¼°°Àº°æ¿ì¿¡´Â È®ÀÎÀÌ ¾ÈµÇ±â¶§¹®¿¡ º¸Åë óÀ½¿¡ httpsÆäÀÌÁö¸¦ ¿¸é ¿¡·¯°°Àº °æ°í°¡ ¶ßÀݾƿä. È®ÀÎÀº Á¦3ÀÚ°¡ ÇØÁִ°ÍÀ̱⶧¹®¿¡ ±×·±°Çµ¥ Á¦°¡ ¾Ë±â·Î´Â Çѱ¹¿¡¼´Â ±×°É ÇØÁÖ´Â ±â°üÀÌ ¾ø´Â°É·Î ¾Ë°íÀÖ½À´Ï´Ù. ¼¼°è¿¡ ¸î±ºµ¥ ¾ø¾î¿ä ±×°Ô... ±×°É ÇÇÇϱâÀ§Çؼ Çѱ¹¿¡¼´Â SSL´ë½Å ÀÌ»óÇÑ activeXµéÀ» ½è´ø°Å°í.... Áö±Ýµµ ±×·±°É ¸¹ÀÌ ¾²°í ÀÖÁö¿ä... ÀÌÁ¦´Â SSL/TLS ¸¦ ¾²°í Àִµ¥µµ ±×·± ÀÌ»óÇÑ ÇÁ·Î±×·¥µéÀ» ´õ µ¹¸®°í ÀÖÀ¸´Ï±î ¿ì¸®³ª¶óÀÇ ÀÎÅÍ³Ý Åë½ÅÀº ¹«ÁöÇÏ°Ô ¾ÈÀüÇÑ°Å°ÚÁÒ? (Á¤¸»·Î?)
¹¹ ÇÏ¿©°£ ±×·¸½À´Ï´Ù.
±¸±ÛÀ̳ª ³×À̹ö¿¡ SSL HTTPS HOW WORKS ¹¹ ÀÌÁ¤µµ·Î °Ë»öÇÏ¸é ¸¹ÀÌ ¶ã²¨¿¡¿ä. ¼³¸íÀÌ Á» °£´ÜÇѰ͵µ ÀÖ°í ³Ê¹« º¹ÀâÇѰ͵µ ÀÖÀ»²¨°í... ±×·±µ¥ ÁÖ·Î ±×¸²À¸·Î µÈ°É º¸¸é ÀÌÇØ°¡ »¡¸®µË´Ï´Ù...
ÈÀÌÆÃ!