ÃֽŠ°Ô½Ã±Û(OS/WAS)
2021.09.14 / 23:11

Nginx ¿£Áø¿¢½º À¥¼­¹ö¿¡ HTTPS / SSL º¸¾ÈÀÎÁõ¼­ ¼³Ä¡Çϱâ - ÄÚ¸®¾ÆSSL

ÇϾá¼Ò
Ãßõ ¼ö 151

Nginx ¿£Áø¿¢½º À¥¼­¹ö¿¡ HTTPS / SSL º¸¾ÈÀÎÁõ¼­ ¼³Ä¡Çϱâ - ÄÚ¸®¾ÆSSL

Nginx´Â ·¯½Ã¾ÆÀÇ ÇÁ·Î±×·¡¸Ó·Î ºÎÅÍ Åº»ýÇÑ ¾ÆÁÖ °¡º­¿î À¥¼­¹ö¶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¹°·Ð ¾ÆÁ÷µµ Apache¸¦ ¼±È£ÇϽô developerµéÀÌ ¸¹Áö¸¸ ÀúÈñ ȸ»ç°¡ ¼­ºñ½º ¶Ç´Â °³¹ß ³³Ç°ÇÏ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î°¡ Java ±â¹ÝÀÌ´Ù º¸´Ï Nginx¸¦ Proxy ¸¦ »ç¿ëÇÏ°Ô µÇ´Â °Í °°½À´Ï´Ù.

ÇÁ·Ï½Ã(Proxy)´Â ´ëºÎºÐ LogicalÀûÀÎ ºÎÇϺлê(Load balancing)À» ¸ñÀûÀ¸·Î ÇÏ°í ÀÖ½À´Ï´Ù.

Application server°¡ Proxy ¹ØÀ¸·Î Á¸ÀçÇϹǷΠÃÖ´ëÇÑ Static ±¸°£¿¡¼­ ºÎÇϸ¦ ºÐ»ê ÇÒ ÇÊ¿ä°¡ Àִ°ÍÀÌÁÒ.

±×·¡¼­ ¿ì¸®´Â Ç×»ó Application server¿¡ Á÷Á¢ º¸¾ÈÀÎÁõ¼­¸¦ ¼³Ä¡ÇÏÁö ¾Ê°í Proxy ¿ªÇÒÀ» ÇÏ´Â Nginx¿¡ ¼³Ä¡¸¦ ÇÕ´Ï´Ù.

ÀÌ°ÍÀº ºñ´Ü Nginx»Ó¸¸ ¾Æ´Ï¶ó Proxy¸¦ »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ Web server <----> App server Flow¿¡¼­ ÀÚÁÖ º¼ ¼ö ÀÖ´Â ÇüÅÂÀÔ´Ï´Ù.

¼³Ä¡Áغñ

1. ÄÚ¸®¾Æ SSL¿¡¼­ ÀÎÁõ¼­ ±¸ÀÔ / ¹ß±Þ

2. Linux(CentOS 7) °è¿­ OS ¶Ç´Â À©µµ¿ìÁî °è¿­ ¼­¹ö

3. Nginx °¡ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÔ. (¾Æ·¡ ¿¹Á¦´Â ver 1.16.1 ±âÁØ)

4. Nginx¿¡ SSLÀ» Áö¿øÇÏ´Â ¸ðµâÀÌ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö È®ÀÎ

5. Çϵå¿þ¾î/¼ÒÇÁÆ®¿þ¾î ¹æÈ­º®¿¡ 443 Port°¡ °³¹æµÇ¾î ÀÖ´ÂÁö È®ÀÎ

6. MacOS Å͹̳Π/ À©µµ¿ìÁî ssh ÀÀ¿ëÇÁ·Î±×·¥ µî Á¢¼Ó ÇÁ·Î±×·¥

°úÁ¤

Nginx ÀÇ °æ¿ì À§ ¹öÁ¯°ú »óÀÌÇصµ ¼³Á¤¿¡´Â Å©°Ô ¹®Á¦ ¾ø½À´Ï´Ù. ±×¸®°í ÀÌ °úÁ¤¿¡¼­´Â ÀÌ¹Ì Nginx°¡ ¼³Ä¡µÇ¾ú´Ù´Â ÀüÁ¦·Î ÁøÇàµË´Ï´Ù.

¿ì¼± ÄÚ¸®¾ÆSSL ¿¡ Á¢¼ÓÇؼ­ ÀÎÁõ¼­¸¦ ±¸ÀÔÇØ¾ß °ÚÁÒ? :) ^-^/

±¸ÀÔ ¹æ¹ý ¹× ÀÎÁõ¼­ ´Ù¿î·Îµå ¹æ¹ýÀº ´ÙÀ½ ¸µÅ©¸¦ ÂüÁ¶ÇØÁÖ¼¼¿ä.

ÄÚ¸®¾ÆSSL ¿¡¼­ º¸¾ÈÀÎÁõ¼­ ±¸ÀÔÇϱâ

±× ´ÙÀ½ Å͹̳ο¡ Á¢¼ÓÀ» ÇÕ´Ï´Ù.

ÇØ´ç ÀÎÁõ±â°ü¿¡¼­ Á÷Á¢ ÀÎÁõ¼­¸¦ ¸ÞÀÏ·Î º¸³»ÁÖÁö¸¸ ÄÚ¸®¾ÆSSL¿¡¼­µµ ´Ù¿î·Îµå °¡´ÉÇÕ´Ï´Ù.

´Ü, CSR »ý¼º´Ü°è¿¡¼­ »ý¼ºµÈ Key ÆÄÀÏÀº ÄÚ¸®¾ÆSSL¿¡ º¸°üµÇÁö ¾Ê±â ¶§¹®¿¡ ºÐ½ÇÇÏ½Ã¸é ¹Ýµå½Ã ÀÎÁõ¼­ Àç¹ß±ÞÀ» ½ÅûÇÏ¼Å¾ß ÇÕ´Ï´Ù.

°£È¤ ´Ù¸¥ ¾÷ü¿¡¼­´Â Key ÆÄÀϱîÁö º¸°üÇÏ´Â °æ¿ì°¡ Àִµ¥ º¸¾È¿¡ ¸Å¿ì Ãë¾àÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¼­¹ö¿¡ Key º¸°üº¸´Ù´Â Key ÆÄÀÏ ºÐ½Ç½Ã¿¡´Â Á¶±Ý ¹ø°Å·ÓÁö¸¸ Àç¹ß±ÞÀÌ º¸¾ÈÀûÀ¸·Îµµ Çö¸íÇÑ ¼±ÅÃÀÌ ¾Æ´Ò±î »ý°¢µË´Ï´Ù.

ÄÚ¸®¾ÆSSL ¿¡¼­ ´Ù¿î·Îµå ÇÒ ¼ö ÀÖ´Â ÆÄÀÏÀº ÃÑ 4°³ ÀÔ´Ï´Ù.

CSR(Certificate Signing Request) / CRT(¶Ç´Â CER) / CA / ÅëÇÕÀÎÁõ¼­(CRT+CA)

CSR ÆÄÀÏÀº Á÷Á¢ »ý¼ºÇؼ­ Á¦ÃâÇÑ ÆÄÀÏ

CRT ÆÄÀÏÀº ½ÅûÇϽŠÀÎÁõ¼­ ÆÄÀÏ

CA ÆÄÀÏÀº ÇØ´ç ÀÎÁõ¼­ ÀÎÁõ±â°üÀÇ ROOT ÀÎÁõ¼­ ÆÄÀÏ

ÅëÇÕÀÎÁõ¼­ ÆÄÀÏÀº CRT ÆÄÀÏ°ú CA ÆÄÀÏÀ» ÅëÇÕÇÑ ¾ÈÁõ¼­ ÆÄÀÏ

½ÇÁ¦ Nginx ¿¡ ¼³Ä¡¿¡ ÇÊ¿äÇÑ ÆÄÀÏÀº ÅëÇÕÀÎÁõ¼­ ÆÄÀÏ°ú Key ÆÄÀÏÀÔ´Ï´Ù.

ÄÚ¸®¾ÆSSL¿¡¼­´Â ÅëÇÕÀÎÁõ¼­ ÆÄÀÏÀ» ½±°Ô ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

ÀÌÁ¦ ´Ù¿î·Îµå ¹ÞÀº ÅëÇÕÀÎÁõ¼­ ÆÄÀÏ°ú ÀÌ¹Ì º¸°üÇÏ°í ÀÖ´Â Key ÆÄÀÏÀ» Àû¿ë ÇÒ ¼­¹ö¿¡ ¾÷·Îµå ÇÏ½Ã¸é µË´Ï´Ù.

NginxÀÇ conf ÆÄÀÏÀ» ¿¡µðÅÍ·Î ÆíÁýÇÕ´Ï´Ù.

* ¼³Ä¡È¯°æ¿¡ µû¶ó ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù.

* ¹ß±Þ¹ÞÀº µµ¸ÞÀÎ¸í¿¡ µû¶ó ÆÄÀϸíÀÌ ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù.

ÄÚ¸®¾ÆSSL ¿¡¼­ ¹ß±Þ¹ÞÀº ÀÎÁõ¼­´Â

/etc/nginx/ssl °æ·Î¿¡ ¾÷·Îµå ÇÏ¿´½À´Ï´Ù.

Nginx ±âº» ¼³Á¤ÆÄÀÏ

vi ¿¡µðÅÍ·Î Nginx ¼³Á¤ÆÄÀÏ ÆíÁý ĸÃÄÈ­¸é

¾Æ·¡ Code ¸¦ º¹»çÇÏ¿© »ç¿ëÇϼ¼¿ä.

server { listen 443 ssl; server_name koreassl.com www.koreassl.com; client_max_body_size 128M; #ssl on; ssl_certificate /etc/nginx/ssl/koreassl_com_bundle.crt; ssl_certificate_key /etc/nginx/ssl/koreassl_com.key; ssl_session_cache shared:SSL:50m; ssl_session_timeout 60m; ssl_protocols TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; ...

À§¿Í °°ÀÌ ÀÎÁõ¼­ °æ·Î¸¦ ÁöÁ¤ÇØÁÝ´Ï´Ù.

ÇØ´ç ¼³Á¤Àº ¼­¹ö ȯ°æ¿¡ µû¶ó ´Ù¸¦ ¼ö ÀÖÀ¸´Ï Âü°í¿ëÀ¸·Î¸¸ È°¿ëÇϽñ⠹ٶø´Ï´Ù.

Áß¿äÇÑ ºÎºÐÀº ssl_certificate ¿Í ssl_certificate_key ÀÔ´Ï´Ù.

À§¿Í °°ÀÌ ¼³Á¤ ÈÄ Nginx¸¦ Àç½ÃÀÛ ÇϽøé SSL Àû¿ëÀÌ ¿Ï·á µË´Ï´Ù.

¾ÆÁÖ ½±ÁÒ ??? :)

ÇÏÁö¸¸ ¸í½ÉÇÒ ºÎºÐÀÌ ÀÖ½À´Ï´Ù.

¼­¹öÀÇ ³×Æ®¿öÅ© ¹æÈ­º® °°Àº ºÎºÐÀÇ ¼³Á¤Àº ¹Ýµå½Ã È®ÀÎÇØ¾ß ÇÕ´Ï´Ù.

¾Æ½Ã´Ù½ÃÇÇ HTTPS/SSL Åë½ÅÀº ±âº»ÀûÀ¸·Î 443 Port¸¦ ÀÌ¿ëÇÕ´Ï´Ù. ¹°·Ð ´Ù¸¥ Port·Î Åë½ÅÀÌ ºÒ°¡´ÉÇÑ °ÍÀº ¾Æ´ÏÁö¸¸ ±âº»Port´Â 443À̹ǷΠÇØ´ç Port°¡ OpenµÇ¾î ÀÖ´Â ¹Ýµå½Ã È®ÀÎÇÏ¼Å¾ß ÇÕ´Ï´Ù.

°¨»çÇÕ´Ï´Ù.