ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Linux] OpenSSL 을 이용하여 https 서버 구축
    Linux 2017. 9. 24. 13:05

    ROOT CA 인증서 생성                           


    1. CA 가 사용할 RSA  public, private key 생성


    openssl genrsa -aes256 -out /etc/pki/tls/private/lesstif-rootca.key 2048



    2. 개인키 권한 설정


    chmod 600  /etc/pki/tls/private/lesstif-rootca.key


    3. CSR 생성을 위한 설정파일 생성


    rootca_openssl.conf

    [ req ]

    default_bits            = 2048

    default_md              = sha1

    default_keyfile         = lesstif-rootca.key

    distinguished_name      = req_distinguished_name

    extensions             = v3_ca

    req_extensions = v3_ca

      

    [ v3_ca ]

    basicConstraints       = critical, CA:TRUE, pathlen:0

    subjectKeyIdentifier   = hash

    keyUsage               = keyCertSign, cRLSign

    nsCertType             = sslCA, emailCA, objCA


    [req_distinguished_name ]

    countryName                     = Country Name (2 letter code)

    countryName_default             = KR

    countryName_min                 = 2

    countryName_max                 = 2

     

    organizationName              = Organization Name (eg, company)

    organizationName_default      = lesstif Inc.

      

    # SSL 서비스할 domain 명 입력

    commonName                      = Common Name (eg, your name or your server's hostname)

    commonName_default             = lesstif's Self Signed CA

    commonName_max                  = 64 


    4. 인증서 요청


    openssl req -new -key /etc/pki/tls/private/lesstif-rootca.key -out /etc/pki/tls/certs/lesstif-rootca.csr -config rootca_openssl.conf


    5. self-signed 인증서 생성


    openssl x509 -req \

    -days 3650 \

    -extensions v3_ca \

    -set_serial 1 \

    -in /etc/pki/tls/certs/lesstif-rootca.csr \

    -signkey /etc/pki/tls/private/lesstif-rootca.key \

    -out /etc/pki/tls/certs/lesstif-rootca.crt \

    -extfile rootca_openssl.conf


    기본 값은 sha256이고 -sha384, -sha512 옵션을 지정하여 해시 알고리즘을 바꿔줄 수 있습니다.






    SSL 인증서 생성                               


    1. SSL 호스트에서 사용할 RSA public, private key 생성 (2048 bit)


    openssl genrsa -aes256 -out /etc/pki/tls/private/lesstif.com.key 2048


    2. 개인키 pass phrase 제거 및 권한 설정


    # cp  /etc/pki/tls/private/lesstif.com.key  /etc/pki/tls/private/lesstif.com.key.enc openssl rsa -in  /etc/pki/tls/private/lesstif.com.key.enc -out  /etc/pki/tls/private/lesstif.com.key


    # chmod 600  /etc/pki/tls/private/lesstif.com.key*


    3. CSR 생성을 위해 설정파일 생성


    [ req ]

    default_bits            = 2048

    default_md              = sha1

    default_keyfile         = lesstif-rootca.key

    distinguished_name      = req_distinguished_name

    extensions             = v3_user

     

    [ v3_user ]

    basicConstraints = CA:FALSE

    authorityKeyIdentifier = keyid,issuer

    subjectKeyIdentifier = hash

    keyUsage = nonRepudiation, digitalSignature, keyEncipherment

    extendedKeyUsage = serverAuth,clientAuth

    subjectAltName          = @alt_names


    [ alt_names]

    DNS.1   = www.lesstif.com

    DNS.2   = lesstif.com

    DNS.3   = *.lesstif.com

     

    [req_distinguished_name ]

    countryName                     = Country Name (2 letter code)

    countryName_default             = KR

    countryName_min                 = 2

    countryName_max                 = 2

     

    organizationName              = Organization Name (eg, company)

    organizationName_default      = lesstif Inc.

      

    organizationalUnitName          = Organizational Unit Name (eg, section)

    organizationalUnitName_default  = lesstif SSL Project

      

    # SSL 서비스할 domain 명 입력

    commonName                      = Common Name (eg, your name or your server's hostname)

    commonName_default             = lesstif.com

    commonName_max                  = 64


    4. SSL 인증서 요청


    openssl req -new  -key /etc/pki/tls/private/lesstif.com.key -out /etc/pki/tls/certs/lesstif.com.csr -config host_openssl.conf


    5. SSL 인증서 발급


    openssl x509 -req -days 1825 -extensions v3_user -in /etc/pki/tls/certs/lesstif.com.csr \

    -CA /etc/pki/tls/certs/lesstif-rootca.crt -CAcreateserial \

    -CAkey  /etc/pki/tls/private/lesstif-rootca.key \

    -out /etc/pki/tls/certs/lesstif.com.crt  -extfile host_openssl.conf



    여기까지가 SSL 인증서 발급 과정이고 이제 이걸 apache에 적용해야 합니다.



    Apache 웹서버 에 SSL 적용                   



    1. mod_ssl 설치


    yum -y install mod_ssl 


    2. 위와 같은 방법으로 SSL인증서와 개인키를 발급받으셨다면  /etc/pki/tls/certs/lesstif.com.crt, /etc/pki/tls/private/lesstif.com.key 이 경로에 있습니다.

    이 파일의 위치를  설정 파일에 지정해주면 됩니다



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


    <VirtualHost *:443>

      ServerName example.com

      ServerAlias www.example.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>



    3. 그리고 나서 apache 를 재시작해줍니다.


    # systemctl restart httpd


    4. 웹브라우저에서 https로 접속해서 잘 보이는지 확인하고 브라우저에 '신뢰하는 인증서 추가'  를 해줍니다



    댓글

Designed by Tistory.