오래전 이야기/Server

[펌] VeriSign인증서 설치가이드- Golbal (Apache Server)

리눅스 엔지니어였던 2008. 9. 15. 13:56

인증서가 발급되면 담당자의 이메일을 통해 두개의 인증서가 전달된다.
하나는 웹서버인증서(servercert.crt) 이고, 다른 하나는 체인인증서(chaincert.crt) 이다.
파일을 메모장(Notepad)으로 열어보면 모두 다음과 같은 형식으로 되어 있다.

-----BEGIN CERTIFICATE-----
MIICwTCCAioCAQEwDQYJKoZIhvcNAQEEBQAwgakxCzAJBgNVBAYTAlhZMRUwEwYD
VQQIEwxTbmFrZSBEZXNlcnQxEzARBgNVBAcTClNuYWtlIFRvd24xFzAVBgNVBAoT
DlNuYWtlIE9pbCwgTHRkMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkx
FTATBgNVBAMTDFNuYWtlIE9pbCBDQTEeMBwGCSqGSIb3DQEJARYPY2FAc25ha2Vv
aWwuZG9tMB4XDTAyMDEwODA0NDY1MFoXDTAzMDEwODA0NDY1MFowgacxCzAJBgNV
BAYTAktSMRQwEgYDVQQIEwtLWVVORyBLSS1ETzEOMAwGA1UEBxMFU2VvdWwxFjAU
BgNVBAoTDVdlYnRpemVuIEluYy4xFDASBgNVBAsTC0RldmVsb3BtZW50MSAwHgYD
-----END CERTIFICATE-----

  1. 아파치 서버에 루트(root) 계정으로 접속한다.
  2. 인증서 복사
    수취한 인증서 파일을 메모장(Notepad)으로 열어서 내용을 복사한다.
    복사할 때에는 첫 줄부터 끝 줄까지 모두 복사하여 아래의 항목이 포함되어야 한다.
    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
  3. 인증서 저장
    서버에서 적당한 이름으로 텍스트파일 하나를 만들어 붙여넣기 한 후에 저장한다.
    여기서는 두 개의 파일을servercert.crt 와 chaincert.crt 라는 이름으로 저장하였다.

    <인증서 설치를 위해 필요한 파일은 다음 두 개이다.>
    server.key (개인키)
    servercert.crt (인증서)
    chaincert.crt (체인인증서)

  4. server.key 는 담당자에게 발송했던 key파일의 내용으로 대처한다.

  5. httpd.conf 파일을 열어 아래 설명대로(빨간글씨) 바꾸어준다.
    먼저 httpd.conf 파일을 httpd.conf.back 등으로 이름을 지어 백업파일을 하나 만들어둔다.
    (만일의 경우를 대비 ^^)


    1) httpd.conf 파일을 열어 SSL Virtual Host Context 부분을 찾는다.

    ##
    ## SSL Virtual Host Context
    ##

    <VirtualHost 211.189.0.254:443> // 2)default부분을 해당 IP로 바꾸어준다

    # General setup for the virtual host
    DocumentRoot "/var/www/html"
    ServerName intranet.webtizen.co.kr
    ServerAdmin webtizen@pink
    ErrorLog /usr/local/apache-ssl/logs/error_log
    TransferLog /usr/local/apache-ssl/logs/access_log

    # SSL Engine Switch:
    # Enable/Disable SSL for this virtual host.
    SSLEngine on // 3)off를 on으로 바꾸어 SSL엔진을 작동시킨다
    .
    .
    .
    SSLCertificateFile /usr/local/apache-ssl/conf/ssl.crt/servercert.crt // 4)인증서(crt파일)를 설치하는 부분. 인증서의 파일 경로를 적어준다
    SSLCertificateKeyFile /usr/local/apache-ssl/conf/ssl.key/server.key // 5)개인키(key파일)을 설치하는 부분. 마찬가지로 개인키의 파일 경로를 적어준다.
    SSLCACertificateFile /usr/local/apache-ssl/conf/ssl.crt/chaincert.crt // 6)체인인증서(crt파일)를 설치하는 부분. 역시 체인인증서의 파일 경로를 적어준다.
    .
    .
    .
    <Files ~ "\.(cgi|shtml|phtml|php3?)$">
     SSLOptions +StdEnvVars
    </Files>

    <Directory "/usr/local/apache-ssl/cgi-bin">
     SSLOptions +StdEnvVars
    </Directory>

    # SSL Protocol Adjustments:
     SetEnvIf User-Agent ".*MSIE.*" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

    # Per-Server Logging:
     CustomLog /usr/local/apache-ssl/logs/ssl_request_log \
     "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

    </VirtualHost>



  6. 수정을 마쳤으면 저장한 후 아파치를 재구동시킨다.
    apachectl stop
    apachectl startssl

    (아파치에서의 SSL 구동 이미지)


    위에서 패스워드를 입력하라는 메시지가 나오는데 여기에는 처음에 개인키를 생성할 때 입력했던 패스워드를 입력하면 된다.

    Server intranet.webtizen.co.kr:443 (RSA)
    Enter pass phrase: // 이 부분에 패스워드를 입력
  7. https://로 해당 사이트에 접속하여 SSL이 잘 구동 되고 있는지를 확인한다.


   ===========================

   key 파일이 처음 인증기관에 발송했던 파일과 틀리면 다음과 같은 error발생


[root@test conf]# ../bin/apachectl startssl


Apache:mod_ssl:Error: Private key not found.
**Stopped
../bin/apachectl startssl: httpd could not be started


[root@test conf]# tail -n /usr/local/apache/logs/error_log


[Tue Jul 12 15:01:42 2005] [notice] caught SIGTERM, shutting down


[Tue Jul 12 15:03:34 2005] [error] mod_ssl: Init: (cert.test.com:443) Unable to configure RSA server private key (OpenSSL library error follows)
[Tue Jul 12 15:03:34 2005] [error] OpenSSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
[Tue Jul 12 15:05:17 2005] [warn] pid file /usr/local/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue Jul 12 15:05:17 2005] [error] mod_ssl: Init: (cert.test.com:443) Unable to configure RSA server private key (OpenSSL library error follows)
[Tue Jul 12 15:05:17 2005] [error] OpenSSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch


[Tue Jul 12 15:07:31 2005] [warn] pid file /usr/local/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue Jul 12 15:07:31 2005] [error] mod_ssl: Init: (cert.test.com:443) Unable to configure RSA server private key (OpenSSL library error follows)
[Tue Jul 12 15:07:31 2005] [error] OpenSSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
[Tue Jul 12 15:10:22 2005] [error] mod_ssl: Init: Private key not found (OpenSSL library error follows)
[Tue Jul 12 15:10:22 2005] [error] OpenSSL: error:0D094068:asn1 encoding routines:d2i_ASN1_SET:bad tag
[Tue Jul 12 15:10:22 2005] [error] OpenSSL: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Tue Jul 12 15:10:22 2005] [error] OpenSSL: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
[Tue Jul 12 15:10:22 2005] [error] OpenSSL: error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib