시놀로지 DSM 5.x & 워드프레스에 SSL 적용하기 (1) -인증서 받기

0
697

4월에 워드프레스에 SSL 적용하여 https로 접속을 해보자 여러방면으로 시도 해봤지만 실패를 했었다. 그렇게 그냥 접어두고 있다가 이번에 3D 프린터를 조립하면서 octoprint를 활용해 보기위해 서버 설정을 다시 만지작 거리다가 SSL 관련 설정을 다시 만져봤는데 되는것이 아닌가… 그 때와 지금의 차이를 모르겠다. 인증서는 Let’s Encrypt 이다.
이 포스트에서는 인증서를 받아서 시놀로지에 적용하는 것을 해보겠다.
다음 포스트를 참고하였다. http://isulnara.com/wp/archives/1209

준비 사항
1. Bootstrap 설치
2. ssh 연결 가능한 환경
3. 도메인을 가지고 있어야 하고 그 도메인으로 NAS or 워드프레스 접속이 가능해야 함.

  1. 각종 툴 및 라이브러리 설치
    ipkg install libcurl openssl grep mktemp bash git
  2. dehydrated 설치
    mkdir /volume1/system
    cd /volume1/system
    git clone https://github.com/lukas2511/dehydrated
    cd dehydrated
    mkdir -p /var/www/dehydrated
  3. 도메인 설정 (각 도메인은 한 줄에 한개 입력, sub 도메인은 공백으로 구분)
    mydomain.com a1.mydomain.com a2.mydomain.com a3.mydomain.com
    abc.com a1.abc.com a2.abc.com
    
  4. 웹서버 설정 (각 도메인은 한 줄에 한개 입력, sub 도메인은 공백으로 구분)
    /etc/httpd/conf/extra/dehydrated.conf 

    Alias /.well-known/acme-challenge /var/www/dehydrated
    <Directory /var/www/dehydrated>
      Order allow,deny
      Allow from all
    </Directory>

    /etc/httpd/conf/httpd.conf-user

    Include conf/extra/dehydrated.conf

    웹 서비스 재시작

    synoservicectl --restart httpd-user

     

  5. 인증서 발급 (certs/mydomain.com 에 생성)
    ./dehydrated -c

     

  6.  인증서 적용
    2가지 방법중 HAProxy 방법 사용. 가상호스트 설정 파일 방식도 사용하려 해봤지만 공유기 문제인지 무슨 문제인지  443포트가 제대로 열리지 않는다.6-1 아파치 가상호스트 설정 파일에 적용
    /etc/httpd/sites-enabled-user/httpd-ssl-vhost.conf-user 

    <VirtualHost *:443>
    SSLCertificateFile /volume1/system/dehydrated/certs/mydomain.com/cert.pem
    SSLCertificateKeyFile /volume1/system/dehydrated/certs/mydomain.com/privkey.pem
    SSLCertificateChainFile /volume1/system/dehydrated/certs/mydomain.com/chain.pem
    SSLCACertificateFile /volume1/system/dehydrated/certs/mydomain.com/fullchain.pem
    </VirtualHost>

    웹서버 재시작

    6-2 HAProxy 설정에 인증서 적용
    fullchain.pem(server cert + intermediates) 파일과 privkey.pem 파일을 하나로 만든다.

    cat certs/mydomain.com/fullchain.pem certs/mydomain.com/privkey.pem > certs/mydomain.com/mydomain.com.pem

    Frontends의 https 설정 중 Binds를 아래와 같이 수정

    :5443 ssl crt /volume1/system/dehydrated/certs/mydomain.com/mydomain.com.pem ciphers AESGCM+AES128:AES128:AESGCM+AES256:AES256:RSA+RC4+SHA:!RSA+AES:!CAMELLIA:!aECDH:!3DES:!DSS:!PSK:!SRP:!aNULL no-sslv3
  7. 시놀로지에서 인증서 갱신 스케쥴 등록
    아래와 같이 /volume1/system/dehydrated/renew_certs.sh 파일 생성 

    #!/bin/sh
     
    DEHYDRATED_PATH=/volume1/system/dehydrated
    DOMAIN=mydomain.com
     
    ${DEHYDRATED_PATH}/dehydrated -c
    cat ${DEHYDRATED_PATH}/certs/${DOMAIN}/fullchain.pem ${DEHYDRATED_PATH}/certs/${DOMAIN}/privkey.pem > ${DEHYDRATED_PATH}/certs/${DOMAIN}/${DOMAIN}.pem

    아래 명령으로 실행 권한 주고, 동작 확인

    chmod 755 renew_certs.sh
    ./renew_certs.sh
    #
    # !! WARNING !! No main config file found, using default config!
    #
    Processing mydomain.com with alternative names: a1.mydomain.com a2.mydomain.com a3.mydomain.com
     + Checking domain name(s) of existing cert... unchanged.
     + Checking expire date of existing cert...
     + Valid till Feb 15 15:02:00 2017 GMT (Longer than 30 days). Skipping renew!

    유효기간이 30일 이상 남았다고 뜨면 OK

  8. 시놀로지 스케쥴러에서 위 renew_certs.sh 등록
  9. 제어판 -> 보안 -> 인증서 -> 인증서 가져오기 에서
    개인키는 privkey.pem 등록 인증서는 cert.pem 등록 (파일은 위에서 인증서 생성한 폴더에 존재)
guest
0 Comments
Inline Feedbacks
View all comments