16.7. SSL¿¡ ÀÇÇÑ ¾ÈÀüÇÑ TCP/IPÁ¢¼Ó

PostgreSQL´Â Ç¥ÁØÀ¸·Î SSLÁ¢¼ÓÀ» Áö¿øÇØ, Ŭ¶óÀ̾ðÆ®/¼­¹öÀÇ Åë½ÅÀÌ ÇÑÃþ ´õ ¾ÈÀüÇÏ°Ô µÇµµ·Ï ¾ÏȣȭÇÕ´Ï´Ù. ±× ¶§¹®¿¡ OpenSSL°¡ Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö ½Ã½ºÅÛÀÇ ¾çÂÊ ¸ðµÎ¿¡ ¼³Ä¡µÇ¾î ±¸Ãà½Ã¿¡ PostgreSQL¿¡ À־ÀÇ ±× Áö¿øÀÌ À¯È¿ÇÏ°Ô µÇ¾î¾ß ÇÕ´Ï´Ù(Chapter 14¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä).

SSLÁö¿øÀ» À¯È¿ÇÏ°Ô ÇØ ÄÄÆÄÀÏ µÇ¾úÀ» °æ¿ì, PostgreSQL¼­¹ö´Â, postgresql.conf¿¡ ´ëÇØ ssl¸Å°³º¯¼ö¸¦ on·Î ÇÏ´Â °ÍÀ¸·Î, SSLÁö¿øÀ» À¯È¿ÇÏ°Ô ÇØ ±âµ¿ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¼­¹ö´Â °°Àº TCP Æ÷Æ®·Î Ç¥ÁØÀûÀÎ Á¢¼Ó°ú SSLÁ¢¼ÓÀÇ ¾çÂÊ ¸ðµÎ¸¦ ±â´Ù·Á Ŭ¶óÀÌ¾ðÆ®¿ÍÀÇ Á¢¼ÓSSLÀ» »ç¿ëÇÒÁö ¾Æ´ÒÁö Á¶Á¤ ÇÕ´Ï´Ù. ±âº»°ª¿¡¼­´Â, À̰ÍÀº Ŭ¶óÀ̾ðÆ®ÀÇ ¼±ÅûçÇ×ÀÔ´Ï´Ù. ÀϺΠ¶Ç´Â ¸ðµç Á¢¼ÓÀ¸·ÎSSLÀÇ »ç¿ëÀ» ÇÊ¿ä·Î Çϱâ À§ÇÑ ¼­¹öÃøÀÇ ¼³Á¤ ¹æ¹ý¹ý¿¡ °üÇØ¼­´Â Section 20.1À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

PostgreSQL´Â, ½Ã½ºÅÛ Àüü¿ëÀÇ OpenSSL¼³Á¤ ÆÄÀÏÀ» Àоî³À´Ï´Ù. ±âº»°ª¿¡¼­´Â, ÀÌ ÆÄÀÏÀÇ À̸§Àº openssl.cnfÀ̸ç, openssl version -d·Î º¸°íµÇ´Â µð·ºÅ丮¿¡ Á¸ÀçÇÕ´Ï´Ù. ÀÌ ±âº»°ªÀº ȯ°æ º¯¼ö OPENSSL_CONF¸¦ Èñ¸ÁÇÏ´Â ¼³Á¤ ÆÄÀÏÀÇ À̸§À¸·Î ¼³Á¤ÇÏ´Â °ÍÀ¸·Î½á º¯°æ °¡´ÉÇÕ´Ï´Ù.

¼­¹öÀÇ ºñ¹Ð Ű ¹× Áõ¸í¼­¸¦ ÀÛ¼ºÇϱâ À§ÇÑ ÀÚ¼¼ÇÑ ¹æ¹ý¿¡ ´ëÇØ¼­´Â OpenSSLÀÇ ¹®¼­¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. Àڱ⠼­¸í Áõ¸í¼­¸¦ ½ÃÇèÀ» À§Çؼ­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, Ŭ¶óÀÌ¾ðÆ®°¡ ¼­¹öÀÇ ½Å¿øÀ» °ËÁõÇÒ ¼ö Àֱ⠶§¹®¿¡, ¿î¿ë½Ã´Â(±Û·Î¹úÀÎCAÀÇ Çϳª ¶Ç´Â ·ÎÄÃ)(CA)¿¡ ÀÇÇØ ¼­¸íµÈ Áõ¸í¼­¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¼­¹ö¿ëÀÇ Àڱ⠼­¸í Áõ¸í¼­¸¦ °£´ÜÇÏ°Ô ¸¸µé±â À§Çؼ­´Â ¾Æ·¡¿Í °°Àº OpenSSL¸í·ÉÀ» »ç¿ëÇØ ÁÖ¼¼¿ä.

openssl req -new -text -out server.req

openssl·ÎºÎÅÍ ³ª¿À´Â Áú¹®¿¡ ´äÇØ ÁÖ¼¼¿ä. ÀÌ ¶§, "Common Name"¿¡´Â È®½ÇÈ÷ ·ÎÄà ȣ½ºÆ®¸íÀ» ÀÔ·ÂÇØ ÁÖ¼¼¿ä. 縰Áö ÆÐ½º¿öµå´Â °ø¹é¿¡¼­µµ »ó°üÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ÆÐ½º ÇÁ·¹ÀÌÁî·Î º¸È£µÈ ۸¦ »ý¼ºÇÕ´Ï´Ù¸¸, 4 ¹®ÀÚ ÀÌÇÏÀÇ ÆÐ½º ÇÁ·¹ÀÌÁî´Â ÀÎÁ¤µÇÁö ¾Ê½À´Ï´Ù. ÆÐ½º ÇÁ·¹ÀÌÁ »èÁ¦Çϱâ À§Çؼ­´Â(¼­¹öÀÇ ÀÚµ¿ ±âµ¿À» ½Ç½ÃÇÏ°í ½ÍÀº °ÍÀ̸é), ¾Æ·¡¿Í °°Àº ¸í·ÉÀ» ½ÇÇàÇØ ÁÖ¼¼¿ä.

openssl rsa -in privkey.pem -out server.key
rm privkey.pem

±âÁ¸ÀÇ Å°ÀÇ ¶ôÀ» Á¦¿ÜÇϱâ À§Çؼ­(¶§¹®¿¡), ³°Àº ÆÐ½º ÇÁ·¹ÀÌÁ ÀÔ·ÂÇÕ´Ï´Ù. ±×¸®°í, ¾Æ·¡¿Í °°À̸¦ ½ÇÇàÇØ ÁÖ¼¼¿ä.

openssl req -x509 -in server.req -text -key server.key -out server.crt
chmod og-rwx server.key

ÀÌ¿Í °°ÀÌ, Áõ¸í¼­¸¦ Àڱ⠼­¸íÀÇ Áõ¸í¼­·Î ÇØ, Ű¿Í Áõ¸í¼­¸¦ ¼­¹ö°¡ °Ë»öÇÏ´Â Àå¼Ò¿¡ º¹»çÇÕ´Ï´Ù. ¼­¹öÀÇ ºñ¹Ð Ű ¹× Áõ¸í¼­¸¦ ÀÛ¼ºÇϱâ À§ÇÑ ÀÚ¼¼ÇÑ ¹æ¹ý¿¡ ´ëÇØ¼­´Â OpenSSLÀÇ ¹®¼­¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

Ŭ¶óÀÌ¾ðÆ®¿¡ ½Å·ÚÇÒ ¼ö ÀÖ´Â Áõ¸í¼­¸¦ ¿ä±¸Çϱâ À§Çؼ­´Â, ½Å·ÚÇÏ´Â CAÀÇ Áõ¸í¼­¸¦ µ¥ÀÌÅÍ µð·ºÅ丮³»ÀÇ root.crtÆÄÀÏ¿¡ ±â¼úÇØ ÁÖ¼¼¿ä. ±× ÈÄ, SSL Á¢¼Ó ±âµ¿½Ã¿¡ Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍÀÇ Áõ¸í¼­°¡ ¿ä±¸µË´Ï´Ù. (Ŭ¶óÀÌ¾ðÆ® Áõ¸í¼­ÀÇ ¼³Á¤ ¹æ¹ý¹ý¿¡ ´ëÇØ¼­´ÂSection 29.16À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä. ) root.crlÆÄÀÏÀÌ Á¸ÀçÇÏ´Â °æ¿ì, Áõ¸í ½ÇÈ¿ ¸®½ºÆ®(CRL) Ç׸ñµµ °Ë»çµË´Ï´Ù.

root.crtÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì, Ŭ¶óÀÌ¾ðÆ® Áõ¸í¼­´Â ¿ä±¸µµ °Ë»çµµ µÇÁö ¾Ê½À´Ï´Ù. ÀÌ ¸ðµå¿¡¼­´Â, SSL´Â ¾Ïȣȭ Åë½ÅÀ» Á¦°øÇÕ´Ï´Ù¸¸, ÀÎÁõÀ» ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.

server.key, server.crt, root.crt, root.crlÆÄÀÏÀº, ¼­¹ö ±âµ¿½Ã¿¡¸¸ °Ë»çµË´Ï´Ù. ±×·¯¹Ç·Î, ÀÌ·¯ÇÑ ÆÄÀÏÀÇ º¯°æÀ» À¯È¿ÇÏ°Ô Çϱâ À§Çؼ­´Â ¼­¹ö¸¦ Àç±âµ¿ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.