StartSSL에서 인증서 발급 받는 방법은 해당 글에서 확인하시기 바랍니다.


- 본 글은 RedHat 계열 기준으로 작성되었습니다. Debian, Ubuntu는 내용이 다릅니다.

- 본 글은 CentOS 7 기준으로 작성되었으며, 아파치는 yum 기반 설치를 가정합니다.



1. 아파치 SSL 모듈 설치


yum -y install mod_ssl



2. 서버에 인증서 저장


mkdir /etc/httpd/conf/ssl


# /etc/httpd/conf/ssl 경로에 아래의 인증서 파일들을 저장합니다.

# 경로는 바뀌어도 상관 없습니다. 아래 4번 항목에서 해당 경로를 수정해 주면 됩니다.


# 넣어야 하는 인증서 관련 파일:

#     acu.pe.kr.crt (도메인 인증서) (StartSSL에서 제공하는 zip 파일에 동봉)

#     private.key (비밀키)


# 인증서 파일들에 대한 권한 설정

chown -R root.root /etc/httpd/conf/ssl

chmod -R 644 /etc/httpd/conf/ssl



3. 아파치 설정 파일(httpd.conf)에 SSL 모듈 로드, 옵션 파일 추가


vi /etc/httpd/conf/httpd.conf


# 아래 내용 추가 (빨간 부분을 서버에 맞게 수정)

LoadModule ssl_module modules/mod_ssl.so

Listen 443

<VirtualHost *:443>

    ServerName acu.pe.kr

    ServerAlias www.acu.pe.kr

    DocumentRoot /var/www/html

    SSLEngine on

    SSLCertificateFile /etc/httpd/conf/ssl/acu.pe.kr.crt

    SSLCertificateKeyFile /etc/httpd/conf/ssl/private.key

</VirtualHost>



4. 아파치 재시작


systemctl restart httpd


# 아파치 실행 시 비밀키(private.key)의 pass phrase를 물어봅니다.

# 비밀키를 생성할 때 입력했던 비밀번호를 입력하시면 됩니다.


# 아파치를 실행할 때마다 pass pharase를 입력하기가 귀찮으시면

# 인증서에 아예 비밀번호를 입력시킬 수 있습니다.

openssl rsa -in /etc/httpd/conf/ssl/private.key -out /etc/httpd/conf/ssl/private.key


# 단, 이렇게 되면 이제부터 개인키 파일이 외부로 노출되어서는 절대 안됩니다.

# 또한 작업하기 전의 원본 파일을 별도로 백업해 두시기 바랍니다. (갱신 시 필요)



5. SSL 적용 테스트


테스트 사이트: https://www.digicert.com/help/



*. 에러 발생 시


이런 메시지가 출력되면 실행에 실패한 것임:

Job for httpd.service failed because the control process exited with error code.


왜 실행이 실패했는 지 로그 확인:

systemctl status -l httpd


문제: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:443

이유: 다른 프로세스가 443 포트를 이미 사용중이므로, 해당 프로세스를 종료해야 함

해결: netstat -tunap | grep 443 명령어로 어떤 프로세스가 사용중인지 확인 후 종료

해결: 해결이 안되면 아파치 설정에 Listen 443이 중복 선언된 것, 따라서 주석 처리


문제: 홈페이지 접속 시 신뢰할 수 없는 인증서 메시지가 출력됨

증상: 서버의 인증서(crt)와 브라우저에 나타난 인증서의 지문(fingerprint)이 같지 않음

증상: Common Name(CA)에 이상한 랜덤 숫자가 표시됨

이유: 인증서가 아파치에 제대로 로드되지 않아 엉뚱한 인증서를 클라이언트에 제공함

해결: httpd.conf의 VirtualHost 443이 도메인을 잘 낚아채도록 수정


StartSSL 사이트에서 무료로 1년 사용 가능한 SSL 인증서를 발급받을 수 있습니다.



1. 사이트 접속 (https://www.startssl.com) 및 회원 가입


오른쪽 상단의 Sign-up을 눌러 회원 가입을 진행합니다.






StartSSL 사이트는 흔히 알던 아이디-비밀번호 방식이 아닌 이메일-인증서 방식입니다.


이메일을 입력하고 인증번호 단계를 거치면 브라우저에 인증서를 발급하여 저장해 줍니다.

인증서가 곧 ID와 같은 역할을 해 줍니다.



인증번호 입력 과정이 끝나면 브라우저에 인증서가 발급됩니다.

(주의: 포멧 등의 사유로 인증서가 브라우저에서 삭제되지 않도록 주의 바랍니다.)






Login Now 버튼을 눌러 로그인에 진입합니다.







2. 로그인


브라우저의 인증서를 통해 1차로 인증이 완료되면 OTP 단계에 진입합니다.


인증서를 선택하고 로그인을 시도하면, 이메일로 일회용 비밀번호가 발급됩니다.

이메일로 전송된 일회용 비밀번호를 입력하여 로그인합니다.







3. 도메인 인증 (소유권 주장)


SSL 인증서를 발급받기 전에, 먼저 해야 하는 단계가 있습니다.

인증서를 발급받고자 하는 도메인에 대한 소유권을 인증해야 해야 합니다.


도메인의 소유자만 해당 도메인에 대해 인증서를 발급할 수 있습니다.

제3자가 내 도메인 이름으로 인증서를 발급하고, 피싱 페이지를 만들 수도 있기 때문이죠.


Validations Wizard 버튼을 눌러 해당 메뉴로 진입합니다.






맨 위의 '도메인 인증'을 선택하고 진행합니다.







인증받고자 하는 도메인을 입력합니다.






해당 도메인을 소유하고 있는지를 도메인 메일 인증을 통해 처리합니다.


부득이하게 도메인 메일이 없거나, webmaster같은 이메일 계정이 없어서 인증이 어렵다면

또 다른 인증 방식인 website control validation을 통해 인증 가능합니다.


(주어지는 html 파일을 웹사이트 루트에 업로드하여 이를 검사하는 방식입니다.)







도메인에 대한 인증(소유권)이 완료되었습니다.

Order SSL 버튼을 통해 인증서 발급 단계로 진입합니다.







4. 인증서 발급


호스트네임을 입력합니다. 무료 인증서는 5개까지 입력 가능합니다.

첫 번째 줄에 입력된 호스트네임이 인증서의 common name이 됩니다.


일반적으로 www를 포함한 도메인과 포함하지 않은 도메인을 입력합니다. (총 2개)







SSL/TLS는 공개키 암호 방식을 사용하기 때문에 공개키비밀키를 생성해야 합니다.

더불어서 인증서에 추가 정보(회사명, 기관명, 회사 주소, 이메일 등)를 입력해야 합니다.


공개키와 추가 정보를 합친 파일을 Certificate Signing Request(CSR) 이라고 합니다.

이 파일은 우리가 손으로 직접 만들 수는 없고 Tool을 사용하여 생성해야 합니다.


비밀키를 먼저 만들고, 비밀키를 사용하여 공개키를 생성하게 됩니다.

일반적으로 비밀키는 랜덤한 값으로 만들기 때문에, 이 역시 Tool이 알아서 해 줄 것입니다.


리눅스에서는 빨간 글씨로 제공된 openssl 명령어를 통해,

윈도우 상에서는 제공되는 StartComTool.exe 프로그램을 통해 생성 가능합니다.


위 Tool을 사용한다면 비밀키(key) 파일과 공개키+추가 정보(csr) 파일이 생성됩니다.

비밀키 파일은 서버 내의 안전한 곳에 잘 보관하시고 유출되지 않도록 해야 합니다.


생성된 CSR 파일의 내용을 복사하여 홈페이지에 입력하고 다음 단계로 진행합니다.







인증서 발급이 성공적으로 완료되었습니다.







5. 인증서 다운로드


Tool Box 메뉴 최상단의 인증서 목록(Certificate List) 메뉴로 진입합니다.







목록에 2개의 인증서가 보일 것입니다 (Products 항목으로 구분하세요)

- 하나는 방금 만든 SSL 인증서입니다.

- 하나는 StartSSL 사이트에 로그인 할 때 사용하는 Client 인증서입니다.


SSL 인증서 우측의 Retrieve 버튼을 누르면 crt 인증서를 다운받을 수 있습니다.

작은 역삼각형 버튼을 누르면 pem 인증서를 다운받을 수 있습니다.




포고플러그의 벽돌에는 많은 이유가 있습니다.

이 글의 내용이 전부를 커버해 주지는 않는 점 유의해 주시기 바랍니다.


제 경우에는 optware를 설치한 후, 다시 돌려놓기 위해

/etc/init.d/211.sh와 /etc/init.d/rcS.sh를 삭제하는 바람에 벽돌이 되었습니다...


알고보니 rcS.sh는 optware 설치 이전에도 이미 존재하는 파일이었고

optware를 설치하면서 별다른 말도 없이 덮어씌우기 한 것이었죠 -_-;;

포고플러그 기본 시스템을 부팅하는 데 중요한 역할을 하는 파일이라고 합니다;;

그래서 증상은 전원 공급 후 초록 램프의 무한 깜빡임.






인터넷을 뒤져보니 Pogoplug의 부팅 순서는 SATA > 내부 메모리 > USB 라고 합니다.

Series 4의 경우 SATA 포트 대신에 상단에 2.5인치 하드를 장착할 수 있게 되어 있고

이게 내부 메모리보다 높은 우선순위로 부팅 순서가 잡혀있는 것을 확인하였습니다.


준비물은 내용을 전부 삭제해도 되는 2.5인치 하드 디스크와 리눅스입니다.

이 하드 디스크에 archlinux 이미지를 씌운 후, 강제로 부팅시키는 방법을 사용할 것입니다.


이미지 다운로드 (약 300MB)


이미지를 다운받고 zip 압축을 풀면 1.5GB의 고정된 이미지가 나옵니다.






2.5인치 하드를 리눅스에 연결합니다. 리눅스가 없다면 가상머신을 이용하시는게 좋겠죠.

저는 CentOS 6.4 32bit LiveCD 버전을 이용했습니다.


fdisk -l 로 하드의 위치를 파악합니다. 제 경우 /dev/sdb 입니다.

fdisk /dev/sdb 실행하고 o 입력 후 p 를 입력해 모든 파티션이 제거됨을 확인합니다.

q로 fdisk를 빠져나옵니다.


아까 받은 이미지를 하드에 복구합니다. 이미지 경로는 알아서 찾아가시기 바랍니다.

# dd if=pogo_recovery_1_5G.img of=/dev/sdb

입력하면 잠시 리눅스가 멈춘 것처럼 보이게 됩니다. 기다리시면 됩니다.


이제 모든 준비가 끝났습니다. 포고플러그 시리즈 4에 장착 후 부팅하시기 바랍니다.

복구는 인터넷에서 rcS를 받아 복붙해 주시면 되겠습니다.






자료 출처: http://oroispot.blogspot.kr/2013/06/pogoplug-sata.html

# 본 문서는 4.0.4-1-ARCH 에서 마지막으로 테스트 되었습니다.


리눅스 버전 확인

uname -a



Swap

dd if=/dev/zero of=/swapfile bs=1M count=512

chmod 600 /swapfile

mkswap /swapfile

swapon /swapfile



웹서버(Nginx)

pacman -S nginx php-fpm

systemctl enable nginx

systemctl enable php-fpm


nginx 설정

nano /etc/nginx/nginx.conf


# location 부분에 index.php 추가

        location / {

            root   /usr/share/nginx/html;

            index  index.php index.html index.htm;

        }


# PHP 부분에 아래 내용 추가

        location ~ \.php$ {

            root           /usr/share/nginx/html;

            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;

            include        fastcgi.conf;

        }


# 아래 내용 주석 해제

        location ~ /\.ht {

            deny  all;

        }


PHP 설정

nano /etc/php/php.ini


# open_basedir에 nginx 루트 경로 추가

open_basedir = /usr/share/nginx/html:/srv/http/:/home/:/tmp/:/usr/share/pear/:/$


# Ctrl+W 로 mysql.so 찾은 뒤 주석(;)해제


systemctl start nginx

systemctl start php-fpm



MariaDB

pacman -S mariadb

systemctl enable mysqld


systemctl start mysqld



FTP 서버(vsftpd)

pacman -S vsftpd

systemctl enable vsftpd


설정

nano /etc/vsftpd.conf

# anonymous_enable=YES를 NO로

# local_enable=YES 주석 해제

# write_enable=YES 주석 해제

# local_umask=022 주석 해제

# chroot_local_user=YES 주석 해제

# allow_writeable_chroot=YES 추가


systemctl start vsftpd



Samba

pacman -S samba avahi

systemctl enable smbd


설정

cp /etc/samba/smb.conf.default /etc/samba/smb.conf

nano /etc/samba/smb.conf


# 찾아 바꾸기

workgroup = WORKGROUP

server string = ALARM


# 공유해 줄 디렉토리를 아래와 같은 형태로 추가 (예시)

[Acu]

path = /media/acu-hdd

read only = no

public = yes

writable = yes

guest ok = no


Windows 7 파일 갯수 제한 해제

nano /etc/security/limits.conf


# 맨 아랫줄에 다음 내용 추가

*               -       nofile          16384


# 계정을 추가하면서 동시에 비밀번호 설정

smbpasswd -a 계정이름


systemctl start smbd



Transmission

pacman -S transmission-cli


mkdir /home/transmission

chown transmission:transmission /home/transmission

usermod -d /home/transmission transmission

 

설정

nano /etc/conf.d/transmissiond

# 각줄의 앞의 #표시를 삭제

# TRANSMISSION_HOME="/home/transmission"

# TRANS_USER="transmission"

# TRANS_ARGS="-g $TRANSMISSION_HOME/.config/transmission-daemon"


systemctl start transmission

systemctl stop transmission


설정

nano /home/transmission/.config/transmission-daemon/settings.json

# 아래 정보를 수정

# "rpc-whitelist-enabled": false,

# "rpc-authentication-required": true,

# "rpc-password": "비밀번호",

# "rpc-username": "아이디",


systemctl start transmission

systemctl enable transmission


#Port: 9091



드라이브 자동 마운트

pacman -S udevil


mkdir /media


설정

nano /etc/udevil/udevil.conf

# default_options_ntfs 항목들 끝에 big_writes, 넣기 

# allowed_options 항목들 끝에 big_writes, 넣기


systemctl enable devmon@root

systemctl start devmon@root

 

# 마운트 경로는 /media/root



각종 파일시스템 마운트 가능하도록

pacman -S ntfs-3g

pacman -S fuse-exfat



  1. 탱탱푸우 2013.04.09 10:19 신고

    잘봤습니다. 근데 궁금한게 있는데 트랜스미션용 id를 만들어서 안하고
    그냥 root로 할려면 어떻게 하면 될까요??

    • Acu 2013.04.16 01:43 신고

      경로 및 아이디를 root로 하면 됩니다만
      보안상 권장하지 않습니다.

최근 MP4 스트리밍을 위해 하드와 포고플러그를 구입했습니다.


사실 성능은 V2(E02)>V3(Video)>V4(Series 4) 순서이긴 한데...(CPU 클럭상)

일단 최신 제품을 쓰자!...라는 것도 있고 디자인도 많이 개선되어서

제일 성능이 낮은(...) 제품을 업어왔습니다.


우선 준비물은 인터넷에 연결된 포고플러그와 1GB 이상의 USB 메모리가 필요합니다.

설치 과정 원본 링크는 여기를 클릭하시면 보실 수 있습니다.




  • 이 과정은 Pogoplug Series 4(V3)에 한하며, 다른 제품에 대해서는 동작을 보증할 수 없습니다.
  • 이 과정은 보증 수리 규정에 위배되는 행위입니다. 이 과정을 따라하는 모든 행동과 그로 인한 결과물은 본인 책임이며 작성자는 책임지지 않습니다.
  • ArchLinux를 설치 및 가동하는 동안에는 my.pogoplug.com이나 모바일 어플리케이션, 그리고 데스크탑에서 사용할 수 있는 모든 Pogoplug의 기본 기능을 사용하실 수 없습니다. 추후에 복구하시면 다시 사용 가능합니다.
  • ArchLinux는 제품이 아니라 USB에 설치되며, 제품 상단의 USB 2.0 포트와 SATA 커넥터만 root 파일 시스템으로 사용이 가능합니다.
  1. 포고 플러그를 인터넷에 접속시킨 후 my.pogoplug.com에서 활성화 시킵니다. 이후 Settings > Security에서 체크박스를 모조리 체크하여 SSH를 활성화 시킵니다.
  2. 포고 플러그의 전원을 끕니다.
  3. 리눅스 설치를 위해서 준비된 1GB 이상의 플래시 메모리를 포고 플러그에 꽂고 전원을 켭니다.
  4. PuTTY등의 프로그램을 사용하여 SSH에 접속합니다. 포고 플러그의 아이피를 입력한 후 접속하면 됩니다.
  5. 포고 플러그의 기본 서비스들을 종료하기 위해 아래 커맨드를 입력합니다:killall hbwd
  6. USB 메모리의 파티션을 위해 fdisk 유틸리티를 실행합니다:
    /sbin/fdisk /dev/sda
  7. 기존 파티션을 삭제하고 새 파티션을 생성하기 위해 아래 동작을 따라합니다:

    1. o를 입력하여 USB 내의 모든 파티션을 삭제합니다.
    2. p를 입력하여 USB 내의 모든 파티션이 삭제되었음을 확인합니다.
    3. n을 입력하여 새 파티션 생성을 선택하고 p를 입력하여 해당 파티션을 Primary로 설정하고, 1을 입력하여 첫 번째 파티션으로 지정한 뒤 계속 ENTER를 눌러 설정값들을 기본값으로 입력합니다.
    4. w를 입력하여 빠져나갑니다.
  8. ext3 파일 시스템을 생성합니다:
    cd /tmp wget http://archlinuxarm.org/os/pogoplug/mke2fs chmod +x mke2fs ./mke2fs -j /dev/sda1 mkdir alarm mount /dev/sda1 alarm
  9. Arch Linux ARM을 다운받습니다. 200MB 용량을 해외 서버에서 받아오므로 멈춘 화면에서 약 30분 이상 소요될 수 있습니다:
    cd alarm wget http://archlinuxarm.org/os/pogoplug/bsdtar chmod +x bsdtar wget http://archlinuxarm.org/os/ArchLinuxARM-kirkwood-latest.tar.gz ./bsdtar -xpf ArchLinuxARM-kirkwood-latest.tar.gz -C . rm ArchLinuxARM-kirkwood-latest.tar.gz sync
  10. 드라이브를 언마운트 합니다:
    cd .. umount alarm
  11. U-Boot installer를 다운로드 받고 실행합니다:
    cd /tmp wget http://archlinuxarm.org/os/ppv4/ppv4-install.sh chmod +x ppv4-install.sh ./ppv4-install.sh
  12. 설치가 끝난 후 별 다른 에러메시지가 없다면 시스템을 재부팅합니다:/sbin/reboot
  13. ArchLinux 설치가 끝났습니다. ID:root, PW:root로 SSH 로그인이 가능합니다.

  1. 꾸러기얌 2013.01.26 20:15 신고

    안녕하세요?저도 포고플러그시리즈4를 사서 리눅스를 깔아볼려고 하는데.

    이쪽에대해 아는게 하나도 없어서 구글링하다가 여기까지 들어왔네요.ㅠㅠ

    혹시 웹서버설치법은 포스팅할 생각이 없으신지요?

    • Acu 2013.01.31 12:38 신고

      메뉴얼대로 따라하시면 간편하게 설치할 수 있습니다.
      https://wiki.archlinux.org/index.php/LAMP

  2. J 2013.02.16 15:29 신고

    혹시 이대로했을때..
    기계가 초록불로 계속깜빡거리고
    아이피도할당받지못하는데 무엇을 잘못한걸까요..?

  3. 2013.03.14 09:57

    비밀댓글입니다

    • Acu 2013.03.15 17:05 신고

      퍼가셔도 괜찮습니다~ 썩 좋은 내용은 아니지만서도...

  4. 2013.03.18 14:58

    비밀댓글입니다

구글을 아무리 뒤져도 libmysqlclient.so.15까지만 나올 뿐 도저히 이게 안나온다.

MySQL을 thread-safe 옵션을 줘서 설치하면 이게 튀어나오는거로 얼핏 기억하는데

이 라이브러리 하나 얻자고 MySQL 재설치하는 개고생을-_-



libmysqlclient.so.18


# SNMP 설치
yum -y install net-snmp*

# MRTG 설치 (경로: /var/www/mrtg)
yum -y install mrtg*

# 각종 그래픽 라이브러리 설치
yum -y install freetype gd libjpeg libpng



# 각 설정 파일의 경로

net-snmp : /etc/snmpd/snmpd.conf

mrtg : /etc/mrtg/mrtg.cfg




# SNMP를 시작하여 네트워크 정보 수집
service snmp start



# cfgmaker를 통해 cfg 파일을 생성한다.
cfgmaker --global 'WorkDir: /var/www/mrtg/' --global 'Language: korean' --global 'Options[_]: bits,growright' -output /var/www/mrtg/mrtg.cfg public@서버아이피

# indexmaker를 통해 웹에 표시할 인덱스 파일을 생성한다.
# 여기서 사용할 cfg 파일은 바로 위에서 생성한 파일을 가리킨다.
indexmaker --title "페이지제목" --output /var/www/html/mrtg/index.htm /var/www/mrtg/mrtg.cfg

# MRTG 갱신을 crond에 추가한다.
crontab -e
*/5 * * * * root /usr/bin/mrtg /var/www/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok


LUFS(Linux Userland Filesystem): http://lufs.sourceforge.net/ 

최신 버전은 2003년에 릴리즈되었다. 8년 된 기술이군...


//아래에서 최신 버전(...)의 LUFS를 받는다.
http://sourceforge.net/projects/lufs/files/lufs/0.9.7/

tar -xvzf lufs-*.tar.gz
cd lufs-* 

./configure
make
make install

configure 과정 중 에러 발생 시

checking kernel headers... configure: error: not found in /lib/modules/2.6.18-194.el5/build/include. please install them!
=> http://blog.acu.pe.kr/29

configure: error: C++ preprocessor "/lib/cpp" fails sanity check


기타 나머지 에러들
=> http://blog.acu.pe.kr/31


curlftpfs -o allow_other 아이디:비밀번호@서버주소 마운트경로








 

checking for GLIB... configure: error: Package requirements (glib-2.0) were not met:


No package 'glib-2.0' found


yum -y install glib2-devel





checking for FUSE... configure: error: Package requirements (fuse >= 2.2) were not met:


No package 'fuse' found


yum -y install fuse-devel





configure: error: "libcurl not found"


아래 사이트에서 최신 버전의 cURL을 다운로드
http://curl.haxx.se/download.html

tar -xvzf curl-*
./configure
make
make install 






 
configure 과정 중에 만나게 되는 오류

checking for GLIB... configure: error: The pkg-config script could not be found or is too old.  Make sure it

is in your PATH or set the PKG_CONFIG environment variable to the full

path to pkg-config.



해결 방법은 간단하다.

yum -y install pkgconfig

 

+ Recent posts