ÃֽŠ°Ô½Ã±Û(OS/WAS)
2018.10.18 / 15:17

apache httpd ¿¡ SSL/HTTPS Àû¿ë ¹× VirtualHost ¿¡ SNI(Server Name Indication) ¹®Á¦ ÇØ°á

hanulbit
Ãßõ ¼ö 146

 

»çÀü ÀÛ¾÷

  1. ¸ÕÀú SSL ÀÎÁõ¼­¸¦ ¹ß±Þ ¹Þ¾Æ¾ß ÇÑ´Ù. Self Signed CA ¸¦ ±¸¼ºÇÏ·Á¸é OpenSSL ·Î ROOT CA »ý¼º ¹× SSL ÀÎÁõ¼­ ¹ß±Þ ¸¦ Âü°íÇÏ¿© SSL ÀÎÁõ¼­¸¦ »ý¼ºÇÑ´Ù.
  2. apache web server ¿ë SSL ¸ðµâÀÎ mod_ssl À» ¼³Ä¡ÇÑ´Ù.

    yum install mod_ssl -y

 

¾ÆÆÄÄ¡ À¥¼­¹ö ¿¡ SSL Àû¿ë

°®°í ÀÖ´Â SSL ÀÎÁõ¼­¿Í °³ÀÎÅ°´Â /etc/pki/tls/certs/lesstif.com.crt, /etc/pki/tls/private/lesstif.com.key  ¶ó°í °¡Á¤ÇÑ´Ù.

 

  1.  vi /etc/httpd/conf.d/ssl.conf 

  2. NameVirtualHost ¸¦ Ãß°¡ÇÑ´Ù.
    NameVirtualHost *:443 
  3. SSL À» Àû¿ëÇÒ VirtualHost ¸¦ ¼³Á¤ÇÑ´Ù.

    <VirtualHost *:443>
      ServerName lesstif.com
      ServerAlias www.lesstif.com
       
      SSLEngine on
      SSLProtocol all -SSLv2
      SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
      
      ## À§¿¡¼­ »ý¼ºÇÑ SSL ÀÎÁõ¼­¿Í °³ÀÎÅ°
      SSLCertificateFile /etc/pki/tls/certs/lesstif.com.crt
      SSLCertificateKeyFile /etc/pki/tls/private/lesstif.com.key
      SSLCACertificateFile /etc/pki/tls/certs/lesstif-rootca.crt
      
      ## 
      <Files ~ "\.(cgi|shtml|phtml|php3?)$">
                SSLOptions +StdEnvVars
            </Files>
            <Directory "/var/www/cgi-bin">
                SSLOptions +StdEnvVars
            </Directory>
      SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
      ErrorLog logs/example.com-ssl_error_log
      TransferLog logs/example.com-ssl_access_log
      LogLevel warn
      CustomLog logs/example.com-ssl_request_log \
       "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    </VirtualHost>
  4. service httpd restart
  5. Web browser¿¡¼­ https ·Î ¿¬°áÇؼ­ Á¦´ë·Î º¸ÀÌ´ÂÁö È®ÀÎÇÑ´Ù.

SELinux ÁÖÀÇ »çÇ×

ºÐ¸íÈ÷ ÆÄÀÏÀÌ Àִµ¥ httpd °¡ ÀÎÁõ¼­³ª °³ÀÎÅ°¸¦ ¸ø ãÀ» °æ¿ì SELinux context ¹®Á¦ÀÌ´Ù.  restorecon ¸í·É¾î·Î context ¸¦ º¹±¸ÇØÁØ´Ù.

restorecon -R /etc/pki/tls/private/
restorecon -R /etc/pki/tls/certs

Browser ¿¡ ½Å·ÚÇÏ´Â ÀÎÁõ¼­ Ãß°¡

Chrome

  1. ¿¬°á -> ÀÎÁõÁ¤º¸ Ŭ¸¯
  2. ÇâÈÄ Ãß°¡

VirtualHost °ü·Ã issue

¹®Á¦

¿©·¯ µµ¸ÞÀÎÀÇ »çÀÌÆ®¸¦ VirtualHost ±â´ÉÀ» ÀÌ¿ëÇÏ¿© SSL ·Î Á¦°øÇÒ °æ¿ì ´ÙÀ½°ú °°Àº ¹®Á¦°¡ ÀÖ´Ù.

  • VirtualHost ´Â Web Browser°¡ WebServer¿¡¼­ HTTP ¿äû½Ã ´ÙÀ½°ú °°ÀÌ Host Header¸¦ Àü¼Û

    * Connected to lesstif.com port 80 (#0)
    > GET / HTTP/1.1
    > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
    Host: lesstif.com

  • Web Server´Â Host ¿¡ ÀÖ´Â ¿äûÀ» º¸°í VirtualHost ¿¡ ¼³Á¤µÈ resource ¸¦ Browser ¿¡ Àü¼Û
  • Browser°¡ Host Header ¸¦ º¸³»±âÀü¿¡ SSL handshakingÀÌ ÀÌ·ç¾î Áö°í ¼­¹ö ÀÎÁõ¼­°¡ ¿À¹Ç·Î Browser ¿¡¼­ SSL ÀÎÁõ¼­ °ËÁõ½Ã ÀÎÁõ¼­¿Í HostName ÀÌ ´Ù¸£´Ù´Â ¿¡·¯°¡ ¹ß»ý

 

ÇØ°áÃ¥

  1. SNI(Server Name Indication - RFC 4366) À» Áö¿øÇÏ´Â Web Server(apache ÀÇ °æ¿ì 2.2.12) ¿Í Web Browser(IE7+, FF2+ µî)¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
    1. Windows ÀÇ °æ¿ì IE7 ÀÌ»óÀÌ°í Vista ÀÌ»óÀ̾î¾ß (µÎ °³°¡ and Á¶°ÇÀÌ´Ù. XP ¿¡ IE7Àº SNI ¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù) SNI Áö¿øµÈ´Ù.
    2. Java´Â 7 ÀÌ»óºÎÅÍ Áö¿øÇÑ´Ù. ((http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html)
    3. ±âŸ ¹ÌÁö¿øÇϴ ȯ°æÀº wikipedia ÀÇ SNI Ç׸ñÀ» Âü°í(http://en.wikipedia.org/wiki/Server_Name_Indication#No_support)
  2. Web Server¿¡ Multiple IP ¸¦ ÇÒ´çÇÏ°í IP-based Virtual Hosts ¸¦ ¼³Á¤ÇÑ´Ù.