컨텐츠로 건너뛰기

클라우드패널(Cloudpanel) phpMyAdmin 외부 DB TLS/SSL 연결 (Azure 기준)

클라우드패널(Cloudpanel)에서 외부 DB를 사용할 때 외부 DB에서 Root CA가 설정된 경우 TLS/SSL 연결을 해야 하죠. 기본적으로 Web UI에서 외부 DB 서버를 연결할 때 인증서를 입력하기는 하지만 각 사이트별 phpMyAdmin 연결 또한 TLS/SSL 연결을 하도록 수정해야 합니다.

1. 클라우드패널(Cloudpanel) phpMyAdmin 기본 설정 확인

우선 phpMyAdmin의 기본 설정을 같이 확인하겠습니다.
경로는 /home/clp/htdocs/app/files/public/phpmyadmin/ 입니다.

/* (상략) */
/**
* Servers configuration
*/
$i = 0;
/**
* First server
*/
$i++;
/*
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
*/
$cfg['Servers'][$i]['auth_type'] = 'signon';
$cfg['Servers'][$i]['SignonSession'] = 'SignonSession';
$cfg['Servers'][$i]['SignonURL'] = $signonUrl;
$cfg['Servers'][$i]['LogoutURL'] = $logoutUrl;
/* (하략) */

클라우드패널(Cloudpanel)에서는 phpMyAdmin 로그인으로 Signon방식을 사용하고 있습니다. $i = 0;여기에서 초기화 하고 $i++; 여기에서 서버들에 대해서 반복하고 있습니다. 따라서 새로 반복되는 부분에 대해서만 CA 인증서를 추가하여 사이트별 phpMyAdmin의 연결을 할 수 있도록 설정하겠습니다.

2. Root CA 인증서를 다운로드 합니다.

Terminal window
wget --no-check-certificate https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem -P /home/clp/htdocs/app/files/public/phpmyadmin

외부 DB서버의 Root CA 인증서를 /home/clp/htdocs/app/files/public/phpmyadmin 경로에 다운로드합니다.

3. Root CA 인증서의 권한을 clp:clp로 변경

Terminal window
chown clp:clp /home/clp/htdocs/app/files/public/phpmyadmin/DigiCertGlobalRootCA.crt.pem

클라우드패널(Cloudpanel)의 기본 유저인 clp의 소유로 인증서 파일의 소유자를 변경합니다.

4. phpMyAdmin의 설정 config.inc.php파일 수정하기

수정한 내용은 클라우드패널(Cloudpanel) 판올림이 되면서 복구될 가능성이 높습니다. 또한, 나중에 변경을 대비해 주석을 달아줍니다.

Terminal window
sed -i '/$i++;/a\/* 외부 DB SSL 연결을 위하여 추가한 줄 시작 */\n$cfg['\''Servers'\''][$i]['\''ssl'\''] = true;\n$cfg['\''Servers'\''][$i]['\''ssl_ca'\''] = '\''DigiCertGlobalRootCA.crt.pem'\'';\n/* 외부 DB SSL 연결을 위하여 추가한 줄 끝 */' /home/clp/htdocs/app/files/public/phpmyadmin/config.inc.php

위의 명령어를 터미널에 입력하면 $i++;를 기준으로 바로 아래에 아래와 같이 4줄을 추가합니다.

Terminal window
/* 외부 DB SSL 연결을 위하여 추가한 시작 */
$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['ssl_ca'] = 'DigiCertGlobalRootCA.crt.pem';
/* 외부 DB SSL 연결을 위하여 추가한 */

5. 클라우드패널(Cloudpanel) phpMyAdmin 수정 결과 확인

Terminal window
cat /home/clp/htdocs/app/files/public/phpmyadmin/config.inc.php

위의 명령어를 입력하시면 아래와 같이 추가된 것을 확인할 수 있습니다.

/* (상략) */
/**
* Servers configuration
*/
$i = 0;
/**
* First server
*/
$i++;
/* 외부 DB SSL 연결을 위하여 추가한 줄 시작 */
$cfg[Servers][$i][ssl] = true;
$cfg[Servers][$i][ssl_ca] = DigiCertGlobalRootCA.crt.pem;
/* 외부 DB SSL 연결을 위하여 추가한 줄 끝 */
/*
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
*/
$cfg['Servers'][$i]['auth_type'] = 'signon';
$cfg['Servers'][$i]['SignonSession'] = 'SignonSession';
$cfg['Servers'][$i]['SignonURL'] = $signonUrl;
$cfg['Servers'][$i]['LogoutURL'] = $logoutUrl;
/* (하략) */

이제 각각의 사이트의 phpMyAdmin에 접속하실 수 있을 것이며, 외부 DB 서버와 정상적으로 통신이 가능합니다.

수고 많으셨습니다. 감사합니다.

  • 암호화된 연결을 사용하여 Azure Database for MySQL - 유연한 서버에 연결

    Askfront.com (에스크프론트)

    기존의 댓글 대신, 초보자도 자유롭게 질문할 수 있는 포럼을 만들었습니다.
    에스크프론트에서는 가이드뿐만 아니라 모든 종류의 질문을 하실 수 있습니다.
    검색해도 오래된 정보나 도움이 되지 않는 정보만 나오는 것 같고, 주화입마에 빠진 것 같은 기분이 들 때가 있습니다.
    그럴 때, 부담 없이 질문해 주세요 :) 같이 의논하며 생각해봅시다.
    가능하다면, 제가 답변 드리겠습니다. 고맙습니다.