메뉴 건너뛰기

infra

[SSL] ssl 서버 만들기

lispro062015.05.15 11:33조회 수 2734댓글 2

    • 글자 크기

https://www.kicassl.com/ (www.sgssl.net) 에서 30일간 무료 체험서비스를 제공해서 사용해 봤다.


그런데 httpd 에 ssl 지원이 안되어서 httpd-2.4 를 다시 컴파일해서 설치했다. 

libphp5.so 가 연동이 안되어서 php 5.2부터 5.6까지 다 시도했는데, ap_log_error, ap_unixd_config 관련 에러로 하루를 낭비했다. ssl 연동은 성공했지만, php 연동이 안되어서 실패했다.


암튼 개인용 key를 이용해 csr 을 만들고 회사에서 pem 파일을 받으면, httpd-ssl.conf 에 설정하면 된다.


-----BEGIN RSA PRIVATE KEY----- 로 시작하는게 개인키다.(3번째 줄 파일에 경로를 설정하면 된다.)

나머지는 가입 업체에서 오기 때문에 csr 을 제외하고 경로를 설정하면 된다.


SSLCertificateFile "/usr/local/apache2/conf/도메인_cert.pem"

SSLCertificateChainFile "/usr/local/apache2/conf/ChainCA.crt"

SSLCertificateKeyFile "/usr/local/apache2/conf/도메인_key.pem"

SSLCACertificateFile "/usr/local/apache2/conf/RootCA.crt"



httpd.conf 파일에 ServerName 을 도메인:443

httpd-ssl.conf 파일에 ServerName 을 도메인:80

을 설정해야, Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for 가 안 나온다.


잘 되면, 비밀번호를 물어본다.


# /usr/local/apache2/bin/apachectl start

Apache/2.4.12 mod_ssl (Pass Phrase Dialog)

Some of your private key files are encrypted for security reasons.

In order to read them you have to provide the pass phrases.


Private key 도메인:443:0 (/usr/local/apache2/conf/도메인_key.pem)

Enter pass phrase:



개 삽질 error_log로 해결


1) getpwuid: couldn't determine user name from uid 4294967295, you probably need to modify the User directive


이게 나오면


User nobody

Group nobody


가 제대로 입력되었는지 확인한다. 2.4에서는 <IfModule unixd_module> 안에 있는데, 2.2에서 사용하려면 주석처리 한다.


2) configuration error:  couldn't perform authentication. AuthType not set!


2.4 문법으로 Require all denied 가 있으면, 2.2에서 error 가 발생하므로, Deny from all 로 바꿔준다.

Require all granted도 없애야 2.2에서 에러가 안 난다.


   <IfModule mod_authz_core.c> 

        Require all denied 

    </IfModule> 

    <IfModule !mod_authz_core.c> 

        Order deny,allow 

        Deny from all 

    </IfModule> 



3) .htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

이 나오면 apache 컴파일 옵션에


--enalble-rewrite 추가(재컴파일이나, loacmodule 방법이 있다.)


4) an unknown filter was not added: DEFLATE

 --enable-deflate

lispro06 (비회원)
    • 글자 크기
[PHP] mbstring 멀티바이트 (by lispro06) 네이버웍스 이용하기(메일) (by lispro06)

댓글 달기

댓글 2
  • 마지막에 apache 별도 사용자를 바꾸는 바람에 db.config.php 파일을 수정할 수 없어, 관리자 설정을 변경 하지 못하고 있었다. 이를 알아내 캐시를 정리하고 다시 apache로 전환한 후 ssl을 적용할 수 있었다.


    아래까지 적용하면, http로 입력하더라도 https로 redirect된다.

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}


    xe에서 절대경로로 되어 있는 녀석들은

    {@$http_ct=$oDocument->getContent(false)}

    {@$https_ct=str_replace("http://","https://",$http_ct)}

    {$https_ct}

    로 고쳤다.



    php 에서 eval 을 사용한 연산에서 unexpected t_encapsed_and_whitespace , syntax error, unexpected '"', expecting T_STRING 등의 에러가 발생하면, httpd.conf 에서 아래를 추가한다.

    <IfModule mod_php5.c>
            php_flag magic_quotes_gpc off
            php_flag magic_quotes_runtime off
            php_flag magic_quotes_sybase off
    </IfModule>
  • XE는 로그인시 전달되는 파라미터를 변경하기 어려워 SSL 적용으로 암호화하는 것이 가장 효율적인 것을 판단된다.

    관리자 페이지의 경우 설치경로의 .htaccess 의 #administrator page RewriteRule을 주석처리 하고, admin 디렉터리의 이름을 바꾸는 것으로 조치하는 것이 좋을 것 같다.

    XE는 기본적으로 관리자 페이지가 분리되어 있지 않으므로 로그인후, ~/index.php?module=admin 로 접근하는 것이 방법이 되겠다.

첨부 (0)
위로