IT_Server/Web_Server & WAS

[펌] 아파치 서버 Https구성하기 + Mercurial

JJun ™ 2013. 7. 4. 03:32

 


 출처

 : http://www.architectgroup.net/cb/wiki/1220#./1220?&_suid=13728761753700983735667520673

 : http://www.architectgroup.net/cb/wiki/1221 


 

 




설치 및 구성

  1. openssl을 포함한 아파치
  2. Python다운로드 ->설치
  3. Mercurial다운로드 ->설치 ※ tortoiseHg의 설치와는 무관하게 링크에 걸린 Mercurial를 Python경로에 설치해야함(설치시 자동으로 <Python Dir>의 경로가 지정됨)
  4. mod_wsgi다운로드->zip 파일 압축 풀기->mod_wsgi.so 옮기기 <Apache_InstallPath>\modules\mod_wsgi.so

mod_wsgi.so파일이름으로 넣으셔야 합니다.

  1. 시작프로그램->Apache HTTP Server 2.2->Configure Apache Server->Edit the Apache httpd.conf Configuration File!
  2. <CB_installPath>/repository/scmweb/httpd.conf.hg파일 안의 내용을 Apache httpd.conf 맨 아래에 붙여넣는다.
  3. httpd.conf파일의 80포트를 Listen 443 로 포트를 변경한다.
  4. mod_ssl을 실행하기 위해 아래의 예제와 같이 수정한다.

    # Secure (SSL/TLS) connections
    #Include conf/extra/httpd-ssl.conf

    LoadModule ssl_module modules/mod_ssl.so
    #
    # Note: The following must must be present to support
    #       starting without SSL on platforms with no /dev/random equivalent
    #       but a statically compiled-in mod_ssl.
    #
    <IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    </IfModule>


    LoadModule wsgi_module modules/mod_wsgi.so
    LoadModule authn_file_module modules/mod_authn_file.so
    LoadModule auth_basic_module modules/mod_auth_basic.so
    LoadModule authz_user_module modules/mod_authz_user.so

    #Replace PYTHON_HOME with the absolute path of your Python installation directory.
    WSGIPythonPath C:\Python26
    NameVirtualHost *:443
    <VirtualHost *:443>
    <Directory "C:/CB-5.6.1/repository">
    Options ExecCGI FollowSymlinks

    AddHandler wsgi-script .wsgi

    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>

    <Location /hg>
    AuthType Basic
    AuthName "Mercurial Repository"
    AuthUserFile "C:/CB-5.6.1/repository/.htaccess"

    Require valid-user
    </Location>

     
    SSLEngine on    
    #키파일 경로를 입력해야 한다. (cert파일과 key파일은 아래의 예제를 보고 만든다.)
    SSLCertificateFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/server.cert"   
    SSLCertificateKeyFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/server.key"


    </VirtualHost>

    WSGIScriptAlias /hg "C:/CB-5.6.1/repository/scmweb/hgwebdir.wsgi"

     

C:/CB-5.6.1경로는 설치경로이므로 httpd.conf.hg파일에서 가져온것을 사용합니다. server.cert ,server.key파일은 아래의 생성방법을 참조하여 원하는 위치를 넣으면 됩니다.

 

 

키생성

개인키생성
 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\openssl.exe
OpenSSL>req -config C:\openssl\bin\openssl.cnf -new -out server.csr

  1. Enter PEM pass phrase:에서는 개인키에서 사용할 암호를 입력합니다.
  2. Country Name:국가명입니다. 우리나라는 KO 입니다.
  3. Locality Name:지역명입니다.
  4. Organization Name:단체명인데 사용할 도메인을 입력합니다. (아파치 설치할때 입력했던 도메인)
  5. Organizational Unit Name:여기도 사용할 도메인을 입력합니다.
  6. Email Address:이메일 주소 아무거나입력합니다.
  7. 해당폴더에 privkey.pem, server.csr 파일이 생성됩니다.

 

 

아파치에 사용할 공개키 생성

OpenSSL> rsa -in privkey.pem -out server.key
OpenSSL> req -config C:\openssl\bin\openssl.cnf -new -x509 -days 365 -key server.key -out server.crt
  1. 해당키를 httpd.conf파일에 설정합니다.

 

 

클라이언트설정

  1. hg clone <주소> --debug --insecure 명령어를 사용하여 아래의 메시지가 나오면 mercurial.ini파일에 [hostfingerprints]설정을 추가합니다.
    -  warning: 192.168.3.254 certificate not verified (check web.cacerts config setting)
    +  warning: 192.168.3.254 certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
    
  • mercurial.ini파일에 아래와 같이 추가를 해줍니다.
    [hostfingerprints]
    192.168.3.254 = 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91
    

 

 


 

 

아파치서버설정

 

설치 (아래의파일들을 설치한다.)

mod_wsgi.so파일이름으로 넣으셔야 합니다.

httpd.conf설정(간단한설정)

  • C드라이브에 repository폴더를 만듭니다.
  • 키생성
    • 키생성
    • 생성한 키(server.crt,server.key)를 C:\Apache2.2폴더안에 넣습니다.
  • 권한파일생성
    • 아파치설치경로의 bin폴더에 htpasswd.exe을 사용하여 권한파일을 만듭니다.
    • 명령어1(파일생성):htpasswd -c .htaccess bond
    • 명령어2(계정추가):htpasswd .htaccess jangil
    • 생성된 .htaccess파일을 c드라이브의 repository폴더에 넣습니다.
  • WSGI구성파일 편집
    • 다운로드
    • 압축을푼 후 hgwebdir.wsgi파일과 hgweb_apache.config파일을 c드라이브의 repository폴더에 넣습니다.
  • httpd.conf파일 맨 아래에 아래의 정보를 넣습니다.(Listen 80포트를 443포트로 변경합니다.)
    LoadModule wsgi_module modules/mod_wsgi.so
    LoadModule authn_file_module modules/mod_authn_file.so
    LoadModule auth_basic_module modules/mod_auth_basic.so
    LoadModule authz_user_module modules/mod_authz_user.so
    WSGIPythonPath C:\Python26
    NameVirtualHost *:443
    <VirtualHost *:443> 
    <Directory "C:/repository">
    	Options ExecCGI FollowSymlinks
    	AddHandler wsgi-script .wsgi
    	AllowOverride None
    	Order allow,deny
    	Allow from all
    </Directory>
    ErrorLog "C:/Apache2.2/hg.log"
    <Location /hg>
    	AuthType Basic
    	AuthName "Mercurial Repository"
    	AuthUserFile "C:/repository/.htaccess"
    	Require valid-user
    </Location>
    SSLEngine on     
    SSLCertificateFile "C:\Apache2.2\server.crt"    
    SSLCertificateKeyFile "C:\Apache2.2\server.key"
    WSGIScriptAlias /hg "C:/repository/hgwebdir.wsgi"
    </VirtualHost> 
    
  • repository폴더안에 hg폴더를 생성합니다.
  • hg폴더안에 머큐리얼 저장소를 생성합니다.
  • 아래의 파일을 repository의 .hg폴더아래에 놓는다.
  • 클라이언트PC 아파치서버 Https구성하기을 한 후에 clone명령어를 사용합니다.
    • 예) hg clone https://bond:007@<서버아이피>/hg/<repository이름>