사이드바 영역으로 건너뛰기

게시물에서 찾기분류 전체보기

2개의 게시물을 찾았습니다.

  1. 2007/09/19
    한샘테크 경보기 HS-5000.T 사용설명서
    종이한장
  2. 2007/06/04
    dav_svn 사용하기
    종이한장

한샘테크 경보기 HS-5000.T 사용설명서

1-2
3-4

5-6
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

dav_svn 사용하기

SSL을 이용하여 subversion을 사용하려면 당연히 아파치에 SSL 기능을 사용할 수 있도록 해야한다.
아래 명령을 차례로 입력하면 된다. 자세한 설명을 원한다면 오픈웹에서 작성한 문서를 참조한다. (아래 more에 스크랩)

흠.. 아래 명령도 오픈웹 문서 볼것!

특히! 주의할 점은 인증서를 만들 때 common name 입력 부분인데, 엉뚱한 값을 넣게되면 브라우저 상에서는 리스트를 확인 할 수 있지만, svn list 명령으로는 아래와 같은 에러를 만나게 된다.

jongi@papyrus:~$ svn list https://hawk/comstock
svn: PROPFIND 요청이 '/comstock'에 대해 실패하였습니다.
svn: PROPFIND of '/comstock': Server certificate was missing commonName attribute in subject name (https://hawk)

아파치를 SSL을 사용 할 수 있도록 설정했다면 dav_svn.conf 파일을 설정한다.
아래는 예제....


  DAV svn
  SVNPath /home/svn/comstock
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /home/svn/comstock/conf/dav_svn.passwd
  AuthzSVNAccessFile /home/svn/comstock/conf/dav_svn.access
  Require valid-user



  DAV svn
  SVNPath /home/svn/jongi
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /home/svn/jongi/conf/dav_svn.passwd
  Require valid-user


아파치에서 SSL을 사용하기 위해서는 아래 문서에서 "두번째 단계"를 참조!

--------------------


워드프레스를 안전하게 운영하는 방안(Apache2 with ssl using Virtual Hosting)

2006.8.25

Wordpress 로 웹사이트를 운영하는 경우 관리자 계정이나 가입자 암호 등이 clear text로 네트웍을 오가는 것은 바람직하지 않습니다. 특히 오픈웹의 경우, 이제 곧, 금융결제원을 상대로 한 소송에 참여할 사람들의 개인정보 등이 웹페이지를 통하여 오고가게 되는데, 이런 민감한 정보는 ssl 서버를 거쳐가도록 하는 것이 좋습니다. 이것은 하나의 서버(컴퓨터)로도 가능합니다.

그동안 후니님께서 워드프레스가 무엇인지에 대하여 저에게 한수 가르쳐 주셨고, 원고인단 모집 스크립트 작업도 해주시고, 빛알갱이님, Cypher님 등께서 그 나머지 부분을 도와주셔서, 소송인단 모집이 그야말로 ‘초읽기’에 들어갔습니다. 이에 다음과 같이 제안합니다.

즉, 민감하지 않은 정보는 http 로, 민감한 정보는 https 로 처리하고자 합니다. Apache가 제공하는 rewrite 기능을 사용하면 됩니다.

다음과 같은 단계가 필요합니다.

  • Apache2 with ssl 서버, 그리고, php, cgi, mysql 등 등 설치
  • 자신이 스스로 CA(인증기관)이 되어, 서명한 server 인증서 설치
  • Virtual hosting 기능을 이용하여 rewriting rule 마련.

첫단계

첫 단계는 이미 된 것으로 전제 한다. 간단한 설명은 여기 참고.

두번째 단계

자신이 서명한 서버인증서를 구비하는 방법은 여기에 설명되어 있다. 간단히 요약하면 다음과 같다.

1. 수퍼유저 권한으로 기존의 설정 파일을 백업해 둘 것: # tar zcvf Before.tgz /etc

2. 인증서를 저장할 폴더를 만든다.

root@korea.gnu.org:/home/glay# cd
mkdir gnuCA
chmod 700 gnuCA
cd gnuCA

3. 인증기관 인증서(CA certificate)를 생성하는데 사용되는 생성키(ca.key)를 다음과 같이 만든다:

# openssl genrsa -des3 -out ca.key 4096

암호를 요구하면, 기억할 수 있는 암호를 입력하고 잠시 기다리면 폴더에 ca.key 가 생성된다.

4. 이 생성키를 사용하여 CA 인증서를 다음과 같이 만든다.

# openssl req -new -x509 -days 365 -key ca.key -out ca.crt

다음 질문에 답변하고, 그 답변 내용을 정확히 적어 둔다.(여기 적어두었네요 :) )

Country Name (2 letter code): KO
State or Province Name (full name): South Korea
Locality Name (eg, city): Seoul
Organization Name (eg, company): GNU Korea
Organizational Unit Name (eg, section): Server Admin
Common Name (eg, YOUR name): korea.gnu.org CA
Email Address: glay@korea.gnu.org

이상을 입력하면, 폴더에 ca.crt 가 즉시 생성된다. 다음과 같이 확인.

root@korea.gnu.org:~/gnuCA# ls
ca.crt ca.key

5. 이렇게 만든 인증기관 인증서(ca.crt)를 사용하여 자신의 서버 인증서를 자기 스스로 발급한다.
먼저 서버인증서 생성키를 다음과 같이 만든다

openssl genrsa -des3 -out server.key 4096

키가 생성되는 과정에서 암호를 요구하면, 기억할 수 있는 암호를 입력한다. (위에 사용한 것과 같아도 무방함)
잠시후 server.key 가 생성되었음을 다음과 같이 확인한다.

root@korea.gnu.org:~/gnuCA# ls
ca.crt ca.key server.key

6. 이 키를 사용하여 인증신청파일(certificate signing request; .csr 파일)을 다음과 같이 만든다.

openssl req -new -key server.key -out server.csr

생성키를 만들때 사용한 암호를 요구하면, 이를 입력한다. 그러면 다음과 같은 질문(위와 같은 항목)이 나오는데, 그 대답은 끝에서 두번째 CN (Common Name) 을 제외하고는 위와 동일하다. 자기가 자신을 스스로 인증하기 때문이다. 그러나, CN이 위와 다르다는 점을 특히 주의!

Country Name (2 letter code): KO
State or Province Name (full name): South Korea
Locality Name (eg, city): Seoul
Organization Name (eg, company): GNU Korea
Organizational Unit Name (eg, section): Server Admin

Common Name (eg, YOUR name): korea.gnu.org
Email Address: glay@korea.gnu.org

7. 자신이 CA가 되어, 자기의 서버인증서를 다음과 같이 서명한다:

openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

그러면 서버인증서 생성키를 만들때 사용하였던 암호를 요구하는데, 이를 입력하면 그 즉시 서명된 서버인증서(server.crt)가 생성, 발급된다. (금결원이 필요없지요… :) ) 다음과 같이 확인

root@korea.gnu.org:~/gnuCA# ls
ca.crt ca.key server.crt server.csr server.key

8. 서버인증서가 사용될 때마다 생성키를 만들때 사용한 암호를 서버관리자가 일일이 입력할 수는 없으므로, 암호 없이 읽혀질 수 있는 서버 인증서생성키를 다음과 같이 만든다.

openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key
chmod 700 server.key

이렇게 발급완료된 서버인증서와 생성키를 다음 위치에 저장한다.

cp server.crt server.key /etc/apache2/ssl/

서버인증서 발급 및 설치가 이렇게 완료되었다. 이제 Apache ssl Server 를 설정하는 일이 필요한데, 이것은 다음 항목에서 설명한다.

세번째 단계

컴퓨터 한대로 http 서버와 https 서버를 동시에 운영하는 것은 Virtual Hosting 기능이 제공한다. 이것을 이용하여 Wordpress 등의 웹페이지를 안전하게 운영하는 방법은 우분투 관련 사이트이곳, 그리고 워드프레스 코덱스 사이트에 설명되어 있는데, 간단히 요약하면 다음과 같다.

1. 서버 설정파일을 다음과 같이 두개로 만든다.

cd /etc/apache2/sites-available/
cp default ssl

2. 그 다음 default 파일의 처음 두 줄을 다음과 같이 수정한다.

NameVirtualHost *:80

조금 밑에 내려가, ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 라는 줄이 시작되기 직전에 다음과 같이, 주소 다시쓰기 규칙(Rewriting rules)을 삽입한다.

## Openweb stuff begins here! ##

Options -Indexes
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Order allow,deny
Allow from all

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^wp-(admin|login|register)(.*) https://%{SERVER_NAME}/openweb/law/wp-$1$2 [C]
RewriteRule ^.*$ - [S=40]
RewriteRule ^feed/(feed|rdf|rss|rss2|atom)/?$ /index.php?&feed=$1 [QSA,L]


## Openweb stuff ends here. ##

3. 그 다음, default에서 복사한 ssl 파일을 (/etc/apache2/sites-available/ssl)을 열어, 다음과 같이 수정한다:


NameVirtualHost *:443

ServerAdmin webmaster@localhost

DocumentRoot /var/www
## Certificate related matters ##
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
## End here ##

그리고, 아까와 같이 ScriptAlias 어쩌구 하는 부분이 시작하기 전, (즉, DocumentRoot에 대한 부분이 선언되고 나면) 다음과 같이 새로쓰기 규칙을 삽입한다.


## Openweb stuff begins here ##

Options -Indexes
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Order allow,deny
Allow from all

RewriteEngine On
RewriteBase /
RewriteRule !^wp-(admin|login|register)(.*) - [C]
RewriteRule ^(.*) http://%{SERVER_NAME}/openweb/law/$1 [QSA,L]


4. 그런 다음, /etc/apache2/ports.conf 파일을 열어서, 다음과 같이 수정한다:

Listen 80
Listen 443

5. 다음과 같은 심링크(symbolic link)를 건다:

ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/

그리고 ssl server 와 관련된 모듈이 활성화 되어 있는지를 다음과 같이 확인한다:

ls /etc/apache2/mods-enabled/
라고 입력해 보았을때 다음과 같은 심링크들이 존재하면 ok.

auth_mysql.load@ php5.load@ proxy_html.load@ ssl.load@
cgi.load@ proxy.conf@ rewrite.load@ userdir.conf@
php5.conf@ proxy.load@ ssl.conf@ userdir.load@

이 중 하나라도 없으면 다음과 같이 심링크 하면된다:

ln -s /etc/apache2/mods-available/모듈파일 /etc/apache2/mods-enabled/

모듈 파일이 /etc/apache2/mods-enabled/ 에 존재하지 않으면, 해당 패키지를 설치하여야 하며, 이때 심링크가 혹시 자동으로 안되면 직접 위와 같이 한다.

6. 이상이 완료되면, Apache2 서버를 다음과 같이 재시작 한다.

# /etc/init.d/apache2 restart

안전한 웹서버 관리 및 이용

이상의 과정이 문제 없이 이루어지고 나면, http://korea.gnu.org/openweb/law 로 접속하면 http 서버가 처리하고, 그 웹페이지에서 민감한 정보가 있는 부분은 https 서버가 처리하게 된다. 페이지 내용은 clear text로 보면되고, 로그인 정보, 회원의 이메일 주소 등은 https 프로토콜로 처리된다.

제가 집에서 테스트 해본 Apache2 설정 파일은 http://korea.gnu.org/openweb/sslSAMPLE.txthttp://korea.gnu.org/openweb/sslSAMPLE.txt 에 있습니다.

Topics: 웹사이트 운영 | 트랙백(trackback) |

7 Responses to “워드프레스를 안전하게 운영하는 방안(Apache2 with ssl using Virtual Hosting)”

  1. youknowit says (2006.8.25, am1:55 ):

    open.unfix.net 의 경우, https 로 접속하는 경우 인증서는 메일서버용이 제시되는데.. 즉, https://open.unfix.net 에 접속했는데, mail.unfix.net 의 인증서가 제시됩니다. 이경우 opera와 firefox, konqueror 등의 브라우저는 일회성으로만 접속이 가능하고, 매번 경고 메시지가 뜹니다.

    korea.gnu.org 의 경우, secure web server 는 없지만, 메일서버 용 인증서는 있습니다. 이 경우에도 메일서버의 호스트네임과 인증서에 표시된 호스트 네임이 달라서, 일회성으로 밖에 설치가 되지 않습니다. 메일 프로그램을 새로 실행한 다음, korea.gnu.org 메일 서버를 ssl 로 접속하여 메일을 발송하려면 매번 경고 메시지가 뜹니다.

    제가 위에서 설명한 방법과 같이, 인증서에 표시된 host name (CN, 즉 Common Name) 과 실제 host name 이 완전히 일치하면, 최초에 한번 경고 메시지가 뜨고 [= 알지 못하(기 때문에 믿을 수 없)는 인증기관이 인증한 인증서라는 내용], 사용자가 이를 영구히 설치하면, 다음부터는 아무런 경고메시지 없이 ssl 교신이 가능합니다.

  2. youknowit says (2006.8.25, am3:13 ):

    Mysql 엔코딩 문제에 대하여는 다음 글을 보세요:

    http://open.unfix.net/mysql-%ED%95%9C%EA%B8%80-%EC%97%94%EC%BD%94%EB%94%A9-%EB%AC%B8%EC%A0%9C/

  3. 정태영 says (2006.8.25, pm10:59 ):

    안 녕하세요 언픽스 서버를 운영하고 있는 정태영이라고 합니다. https 의 경우 name based virtual host 를 지원하지 않기 때문에 https 기본 포트로는 제공해 드릴 수가 없지만 필요하시다면 10000번 port 등을 이용해서 https 를 제공해드릴 수 있습니다.

    필요하시다면 메일 주시기 바랍니다 :)

  4. 정태영 says (2006.8.25, pm11:06 ):

    mysql 한글 문제 페이지에 있는 내용에도 약간의 오류가 있는 듯 해서 그 곳에 코멘트를 달려고 했지만 달리지 않는군요 :)

    mysql-4.1 버젼 이상에서는 client to server 에 사용되는 인코딩과 server to client 로 사용하는 인코딩 설정이 가능합니다.

    client 에서 server 로 데이타가 전송될 때는 character_set_client 에서 character_set_connection 으로 변환이 되고 server 에서 client 로 전송될 때는 db, table, column charset 에서 character_set_results 로 변환이 되게 되구요 ;)

    gnu korea 의 character_set_results, character_set_client, character_set_connection 값이 어떻게 되있는 지에 따라서 위 페이지의 내용은 맞는 내용이 되기도 하고 틀린 내용이 되기도 합니다.

    결론만 말하자면 mysql 5, 4.1 버젼 에 들어있는 데이타를 utf-8 로 dump 할 경우 charset 이 latin1 으로 설정되어 있는 mysql 4.0 에 되돌리더라도 한글이 깨지지 않습니다.

    얼마전 mysql 을 업그레이드 하면서 관련된 내용을 조금 정리한 글이 있어서 링크 걸고 갑니다. 즐거운 하루 보내세요~

    http://b.mytears.org/2006/08/362

  5. 정태영 says (2006.8.25, pm11:08 ):

    mysql 기본 설정 값을 확인하기 위해서는 mysqladmin -p variables 를 실행시키시고 mysql 비밀번호를 입력하시면 됩니다 :)

  6. 정태영 says (2006.8.25, pm11:13 ):

    본의 아니게 도배를 하고 가게 되는군요 :) https 같은 경우는 도메인이 큰 문제가 되는게 아니라면 https://unfix.net/open/ 정도로 alias 를 걸어드릴 수도 있겠네요.

    그렇게 할 경우 아래 링크를 걸게 되는 인증서만 등록해 두면 보안 경고창은 보이지 않을 겁니다.

    http://unfix.net/resources/unfix.crt

  7. youknowit says (2006.8.26, pm3:10 ):

    이메일 보내드렸습니다. 가입, 로그인, 관리 등의 경우 ssl 서버로 리디렉트가 잘되고, https 에서 다시 http 로도(보안의 필요가 없는 사이트로 갈때) 정확히 잘 전환되는 군요.
    고맙습니다 Very much!


진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크