2013년 2월 13일 수요일

실시간 인증서 상태 확인 기술규격( OCSP)

1. OCSP 규격의 구성 및 범위

  본 규격은 [RFC2560]을 준수하여 전자서명인증체계에서 이용되는 OCSP에 대한 규격을 정의한다.

 첫 번째로 OCSP 인증서 발급 및 운용 모델을 명시하며 OCSP 서버와 클라이언트간 메시지 교환을 위한 프로토콜 및 공인인증서 효력정지 및 폐지정보 획득 방법에 대해 정의한다.

 두 번째로 OCSP 서비스를 제공하기 위해 필요한 OCSP 서버 및 클라이언트 소프트웨어 요구사항을 명시한다.


2. OCSP 모델

  2.1. OCSP서버용 공인인증서 발급 모델

    공인인증기관이 OCSP서버를 운용하고자 하는 경우 OCSP서버를 위한 공인인증서를 발급해야 한다. 본 기술규격에서는 OCSP서버를 위한 공인인증서를 최상위인증기관이 발생한 경우와 최상위인증기관이 발행한 공인인증기관의 공인인증서에 해당하는 공인인증기관의 전자서명 생성키로 발행한 공인인증서만 허용된다.

   2.1.1. 최상위인증기관이 발급하는 경우

      공인인증기관이 OCSP 서버를 운영하고자 하는 경우 OCSP서버를 위한 공인증서를 최상위 인증기관에서 발급해 줄 수 있다. 이 경우 OCSP서버용 공인 인증서 발급 모델은 아래와 같다.

      OCSP 서버용 공인인증서 프로파일은 [KCAC.TS.DSCP]을 준용해야 한다.



   2.1.2. 공인인증기관이 발급하는 경우

     OCSP서버를 위한 공인인증서를 공인인증기관이 직접 발행하여 사용할 수도 있다. 이 경우 OCSP서버용 공인인증서 발급 모델은 그림 2와 같다.



         공인인증기관이 OCSP서버용 인증서로 shortlived 인증서를 발행할 경우 OCSP서버용 인증서 프로파일을 준수해야 하며 유효기간은 CRL 갱신주기에 비해 충분히 짧은 유효기간을 가져야 한다. 이용자는 OCSP서버용 인증서가 shortlived 인증서로 사용될 경우라도 CRL이외의 확장필드에 대한 검증은 반드시 수행해야 한다.

         OCSP 서버용 shortlived 인증서 프로파일은 [KCAC.TS.DSCP]을 준용해야 한다.

  
  2.2. OCSP 서버 운영 모델

    공인인증기관이 OCSP서버를 운영하기 위한 모델은 그림 3과 같다.



      OCSP서버는 이용자가 원하는 공인인증서 상태 조회 요청이 있을 경우 해당 공인인증서의 상태 정보를 이용자에게 응답하여 준다.
      OCSP서버는 해당 공인인증서의 상태정보를 조회하기 위해 CA에서 제공되는 최신의 효력정지 및 폐지정보를 획득/관리해야 한다.

      OCSP서버와 이용자간의 상태 조회 요청 및 그 응답과 관련된 기술기준은 3.1절에 기술되어 있으며 OCSP서버가 최신의 효력정지 및 폐지 정보를 획득하기 위해 필요한 사항들은 3.2절에 기술되어 있다.



3. 구성요소간 기준

  3.1. OCSP서버와 클라이언트

    OCSP서버는 적법한 클라이언트가 원하는 공인인증서의 상태를 조회할 수 있도록 한다.
    이를 위해 OCSP서버와 클라이언트간의 메시지 교환을 위한 프로토콜은 [RFC2560]을 준용해야 한다.
 
   공인인증서 상태 조회를 위한 요청 메시지와 응답메시지 전송을 위한 프로토콜은 HTTP를 사용해야 한다.

   클라이언트가 OCSP서버 공인인증서를 획득하기 위하여 응답 메시지에 OCSP서버의 공인인증서를 포함하여 보내야 한다.

   OCSP 요청 및 응답은 재연 공격(replay attack)에 대처할 수 있도록 난수(Nonce)를 requestExtensions 및 responseExtensions에 반드시 사용해야 한다.

   이용자가 요청한 인증서의 상태조회 결과가 폐기인 경우 이용자가 인증서의 폐지사유를 명확히 알 수 있도록 응답 메시지의 revocationReason 필드를 반드시 사용해야 한다.


 3.2. OCSP서버의 공인인증서 효력정지 및 폐지정보 획득

    OCSP서버가 공인인증서의 상태를 제공하기 위해서 공인인증서 효력정지 및 폐지정보를 획득.관리해야 한다. 이를 위해서 OCSP서버는 CA가 제공하는 최신의 공인인증서 효력정지 및 폐지정보를 획득해야 한다.
    OCSP서버가 공인인증기관 내에 존재하여 CA서버 혹은 디렉토리 시스템으로부터 공인인증서 효력정지 및 폐지정보를 획득하는 경우 다음의 사항을 만족해야 한다.

     o OCSP서버가 클라이언트에게 제공하는 공인인증서 효력정지 및 폐지정보는 CA가 제공하는 최신 공인인증서 상태 정보가 모두 반영되어 있어야 한다.

     o OCSP서버가 공인인증서 효력정지 및 폐지정보 획득을 위해 CA서버에 접근하는 경우 CA서버는 OCSP서버에 대한 접근통제 기능을 가져야 한다.
     o CA서버가 공인인증서 효력정지 및 폐지정보를 제공하기 위해 OCSP서버에 접근하는 경우 OCSP서버는 CA서버에 대한 접근통제 기능을 가져야 한다.

     o OCSP서버에 제공된 공인인증서 효력정지 및 폐지정보에 대한 무결성을 보장할 수 있어야 한다.
   
 

2013년 1월 14일 월요일

[CentOS]bitnami Redmine 설치

OS : CentOS 6
Redmine : 2.2.0-0


  • bitnami-redmine-2.2.0-0 다운로드
    # wget http://downloads.bitnami.org/files/stacks/redmine/2.2.0-0/bitnami-redmine-2.2.0-0-linux-x64-installer.run
    
  • bitnami-redmine-2.2.0-0 설치
    # chmod 777 bitnami-redmine-2.2.0-0-linux-x64-installer.run
    # ./bitnami-redmine-2.2.0-0-linux-x64-installer.run
    
    • 설치시 한국어 선택
    • 설치 폴더는 알아서 세팅
    • 관리자의 사용자 정보를 올바로 입력
  • bitnami-redmine 정상 설치 확인
  • 브라우저에서 http://localhost:8080 으로 접속하여 redmine 관련 정보가 뜨는지 확인

2013년 1월 9일 수요일

[CentOS] 6.x 64bit 버전 APM 소스 설치 및 openssl 연동


설치 환경
CentOS 6.3 64bit
MySQL 5.5.28
Apache 2.4.3
PHP 5.4.8

APM설치를 위한 사전 요구사항

필수 패키지 설치

# yum -y install pcre-devel lua-devel libxml2-devel ncurses-devel zlib zlib-devel curl openssl openssl-devel libtermcap-devel libc-client-devel bison gcc g++ cpp gcc-c++ freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel flex php-mbstring libexif-devel cmake

Apache 설치를 위한 패키지 설치

1) APR (소스 설치)
 * Apache 2.4.X 는 APR 1.4 이상을 필요로 합니다. CentOS 6.x  yum에서는 1.3.9 패키지를 사용함으로 소스를 컴파일해서 설치.

# cd /usr/local/src

# wget http://mirror.apache-kr.org//apr/apr-1.4.6.tar.gz
# tar xvfz apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure --prefix=/usr/local/apr-1.4.6


[./configure 시 에러출력]
config.status: executing libtool commands
rm: cannot remove `libtoolT': No such file or directory
config.status: executing default commands
config.status: include/apr.h is unchanged
config.status: include/arch/unix/apr_private.h is unchanged

위와 같은 에러 출력시 아래처럼 파일을 복사해주고 진행을 계속 합니다.
# cp -arp libtool libtoolT


# make && make install


[make시 에러 출력]
make[1]: Entering directory `/usr/local/src/APM_setup/apr-1.4.2'
/bin/sh /libtool --silent --mode=compile gcc -g -O2 -pthread   -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE   -I./include -I/usr/local/src/APM_setup/apr-1.4.2/include/arch/unix -I./include/arch/unix -I/usr/local/src/APM_setup/apr-1.4.2/include/arch/unix -I/usr/local/src/APM_setup/apr-1.4.2/include  -o passwd/apr_getpass.lo -c passwd/apr_getpass.c && touch passwd/apr_getpass.lo
/bin/sh: /libtool: No such file or directory
make[1]: *** [passwd/apr_getpass.lo] Error 127
make[1]: Leaving directory `/usr/local/src/APM_setup/apr-1.4.2'
make: *** [all-recursive] Error 1

위와 같은 에러가 나온다면 아래처럼 심볼릭 링크를 걸어주고 진행을 계속 합니다.
# ln -s /usr/bin/libtool /
# make clean



# wget http://mirror.apache-kr.org//apr/apr-util-1.4.1.tar.gz
# tar xvfz apr-util-1.4.1.tar.gz
# cd apr-util-1.4.1
# ./configure --prefix=/usr/local/apr-util-1.4.1 --with-apr=/usr/local/apr-1.4.6
# make && make install





MySQL 설치 (cmake 설치)

 - 설치 위치 : /usr/local/mysql-5.5.28
 - 데이타 위치 : /mysql/data

1. MySQL (http://www.mysql.com/downloads/mysql/)
  # cd /usr/local/src/
  # tar xvfz mysql-5.5.28.tar.gz

2. User 및 디렉토리 생성
  # adduser -M -s /bin/false mysql
  # mkdir -p /mysql/data /mysql/log
  # chown mysql.mysql data
  # chown mysql.mysql log

3. 소스 컴파일
  - 운영상의 편의성을 위해 설치 경로명에 버전을 같이 명기
  - 설치 옵션은 http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.5/en/source-configuration-options.html 참조
  - CharSet 관련 설정은 http://dev.mysql.com/doc/refman/5.5/en/extended-show.html 참조

  # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.28 -DMYSQL_DATADIR=/mysql/data -DDEFAULT_CHARSET=euckr \
  -DDEFAULT_COLLATION=euckr_korean_ci -DWITH_EXTRA_CHARSETS=all
  # make && make install

  (UTF8 설정시 옵션)
  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

4. 심볼릭 링크 생성
  # ln -s /usr/local/mysql-5.5.28 /usr/local/mysql

5. 환경 설정
  1) 권한 설정
  # cd /usr/local
  # chown -R mysql.mysql ./mysql-5.5.28
  # chown -R mysql.mysql /mysql

  2) 스크립트 구동
  # cd /usr/local/mysql
  # ./scripts/mysql_install_db --user=mysql --datadir=/mysql/data

6. my.cnf
  1) 시스템 메모 크기에 따른 /usr/local/mysql/support-file 밑에 아래 설정 화일을 /etc/my.cnf 로 복사합니다.
  - 64M 이하 : my-small.cnf
  - 65M ~ 256M : my-medium.cnf
  - 512M : my-large.cnf
  - 1G ~ 2G : my-huge.cnf

  2) my.cnf를 시스템에 맞게 설정합니다.

7. 구동
  1) MySQL server 구동
  # cp -av /usr/local/mysql-5.5.28/support-files/mysql.server /etc/init.d/mysqld
  # /etc/init.d/mysqld start

*구동시 아래 에러 발생시 조치방법*

 증상) MySQL: Starting MySQL….. ERROR! The server quit without updating PID file
 해결방안) http://icesquare.com/wordpress/mysql-starting-mysql-error-the-server-quit-without-updating-pid-file/ 사이트 참조


  2) 암호 설정
  # ./bin/mysqladmin -u root password <new-password> (<- 괄호없이 비번만 입력)

  3) 접속 테스트
  # mysql -p mysql
  mysql> 나오면 성공

8.  자동 구동 설정
  # vi /etc/rc.d/init.d/mysqld
  - 아래 부분 수정
  basedir=/usr/local/mysql
  datadir=/mysql/data

  # chkconfig --add mysqld



Apache 설치

1. Apache (http://httpd.apache.org/download.cgi)
  # cd /usr/local/src/httpd-2.4.3
  # ./configure --prefix=/usr/local/httpd-2.4.3 --enable-so --with-mpm=worker --enable-cache --with-apr=/usr/local/apr-1.4.6 --with-apr-util=/usr/local/apr-util-1.4.1 --enable-ssl --with-ssl=/usr --enable-rewrite

   - 여기 사용된 옵션은 아파치 웹 서버의 성능을 높히기 위한 것으로써 아래 문서를 참고.
    http://httpd.apache.org/docs/2.4/mod/worker.html
    http://httpd.apache.org/docs/2.4/mod/mod_cache.html

  # make && make install
  # ln -s /usr/local/httpd-2.4.3 /usr/local/apache2


PHP 설치
  # wget http://kr1.php.net/get/php-5.4.8.tar.gz/from/this/mirror
  # tar xvfz php-5.4.8.tar.gz
  # cd php-5.4.8.tar.gz
  # ./configure --prefix=/usr/local/php-5.4.8 --with-apxs2=/usr/local/httpd-2.4.3/bin/apxs --with-mysql=/usr/local/mysql-5.5.28 --with-config-file-path=/usr/local/httpd-2.4.3/conf --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib=/usr --enable-mbstring --enable-exif
  # make && make install



apache 추가 환경설정
  # vi httpd.conf
  - 아래 부분 삽입
   <IfModule dir_module>
      DirectoryIndex index.html index.htm index.php
  </IfModule>

- 아래 주석 해제 및 삽입
  <IfModule mime_module>
      AddType application/x-httpd-php .php .htm .html .inc .php4 .php3
      AddType application/x-httpd-php-source .phps
  </IfModule>



PHP 환경설정
  # cd /usr/local/src/php-5.4.8
  # cp php.ini-production /usr/local/httpd-2.4.3/conf/php.ini
  # cd /usr/local/httpd-2.4.3/conf
  # vi php.ini


openssl 환경 설정
   # vi ./conf/httpd.conf

  #ServerName www.example.com:80 의 아래에
ServerName 127.0.0.1 을 입력한다.
DocumentRoot "설치된경로/htdocs" 라고 되어있는 부분에 웹서비스할 디렉토리 경로를 입력하자.
LoadModule ssl_module modules/mod_ssl.so 가 있는지 확인하자. 없다면 SSL이 활성화되지 않은 것이다.
활성화 부분이 주석처리 되어 있다면 주석을 제거하자. ( # 으로 시작하는 라인은 주석이다. #을 제거 )
#include conf/extra/httpd-ssl.conf 부분을 찾아 # 를 제거하자. SSL 설정파일이다.


   # vi ./conf/extra/httpd-ssl.conf

Listen 443 은 httpd.conf 의 Listen 80 과 같은 내용이다.
http 는 80번 포트로, https 는 443 포트로 접속된다. 방화벽 설정이 되어있다면 443 포트를 열어주자.

<VirtualHost_default_:433> 안 에 있는 설정들을 수정해야한다.
DocumentRoot 는 httpd.conf 와 같으면 된다.
ServerName 에는 127.0.0.1:443 으로 해주자.
SSLCertificateFile 에는 우리가 생성했던 인증서를 연결시켜줘야한다.
예) SSLCertificateFile "/web/ssl-key/ssl2010.crt"
SSLCertificateKeyFile 은 암호키
예) SSLCertificateKeyFile "/web/ssl-key/ssl2010.key"

그외...
Jk (mod-jk.so) 를 이용하여 Tomcat 과 연동하는 경우는
<VirtualHost_default_:433> 안 에도 JkMount 를 써주면 되겠다.
예)  JkMount /- ajp13





Apache 자동 구동 설정
   # cd /usr/local/httpd-2.4.3/bin
   # cp apachectl /etc/rc.d/init.d/httpd

  - Apache Config test
  # /etc/rc.d/init.d/httpd configtest

  - Apache Start
  # /etc/rc.d/init.d/httpd start




2013년 1월 1일 화요일

MongoDB 설치 (CentOS 기준)

# cd /usr/local/src
# wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.2.1.tgz
# tar zxvf mongodb-linux-i686-2.2.1.tgz 
# cp -Rf mongodb-linux-i686-2.2.1/ /usr/local/mongodb 
# cd ../mongodb
# ll
total 72
-rw------- 1 root root 34520 11?? 17 21:00 GNU-AGPL-3.0
-rw------- 1 root root  1359 11?? 17 21:00 README
-rw------- 1 root root 11527 11?? 17 21:00 THIRD-PARTY-NOTICES
drwxr-xr-x 2 root root  4096 11?? 17 21:00 bin
# mkdir -p /data/mongodb
# mkdir -p /log/mongodb
# vi mongodb.conf
dbpath=/data/mongodb
logpath=/log/mongodb/mongodb.log
logappend=true
verbose=true
#bind_ip=127.0.0.1
port=27017
fork=true
# rest 옵션은 브라우저에서 접속할건지 여부, 브라우저포트는 port로 잡은 거에 +1000 한 값 (28017)
rest=true
#auth=true
#noauth=true

MONGODB_HOME 설정
# vi /etc/profile
MONGODB_HOME=/usr/local/mongodb
export MONGODB
PATH=$PATH:$MONGODB_HOME/bin
export PATH
# source /etc/profile

몽고디비 실행
# mongod --config /usr/local/mongodb/mongodb.conf

몽고디비 클라이언트 접속
# mongo localhost:27017
MongoDB shell version: 2.2.1
connecting to: localhost:27017/test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
>

브라우저에서 확인하기
http://192.168.0.205:28017/