명령행에서 Zimbra에 SSL 인증서 설치하기

이 글에서는 명령행에서 zmcertmgr을 사용하여 Zimbra에 SSL 인증서를 설치하는 방법을 설명합니다. 통상 Zimbra는 WebUI에서 간편하게 SSL 인증서를 설치할 수 있습니다만, 설치 과정에서 에러가 빈번하게 발생하여 제대로 설치되지 않는 경우가 많아 어쩔수 없이 직접 명령행을 써서 설치해야 할 경우가 많습니다. 이런 경우에 이 글이 유용하게 쓰이기 바랍니다.

1. CSR 생성하기

CSR은 Certificate Signing Request(인증서 서명 요청)의 약자로, SSL 인증서 발급에 필요한 정보를 담고 있는 인증서 신청 형식의 데이터입니다. CSR에 포함되는 내용으로는 개인키 생성 단계에서 만들어지는 개인키(Private Key)와 공개키(Public Key)의 키쌍 중에서 공개키가 포함되며, 인증서가 적용되는 도메인에 대한 정보 등을 포함하고 있습니다. Zimbra에서는 CSR과 SSL 인증서를 관리하기 위해 zmcertmgr 명령어를 사용합니다. zmcertmgr 명령어를 사용하기 위해서는 Zimbra 서버에 SSH로 접속해야 하며, zmcertmgr을 사용하기 위해서는 Zimbra 버전 8.7 이상에서는 zimbra 로, 그 이하 버전에서는 root로 로그인해야 합니다. zimbra 유저로 로그인 하는 것은 root로 로그인한 상태(또는 root 권한을 획득한 상태)에서 su – zimbra 하면 zimbra 유저로 바뀝니다.

zmcertmgr은 /opt/zimbra/bin/zmcertmgr 에 있습니다. CSR을 생성하기 위해 다음과 같이 명령어를 내립니다.

위의 명령행에서 C, ST, L, O 등의 약자의 의미는 다음과 같습니다.

약자 의미
C국가코드, ISO 3166-1에 부합하는 국가코드로 2글자여야 합니다. 국가코드 리스트는 https://countrycode.org/ 에서 확인할 수 있습니다.
STState or Provice, 시/도의 이름
LLocality, 구/군/시의 이름
OOrganization, 회사명. 해당되는 것이 없으면 NA를 적어도 됩니다.
OUOrganization Unit, 부서명. 해당되는 것은 없으면 NA를 적어도 됩니다.
CNCommon Name, 서버의 호스트네임. 와일드카드 인증서를 발급받는 경우에는 *.yourdomain.com 과 같은 형식으로 합니다.

복수 도메인에 활성화하기 위해 복수 도메인에 대한 CSR를 생성하기 위해서는 다음과 같이 SAN을 -subjectAltNames 뒤에(여기서는 subdomain.yourdomain.com,otherdomain.com 위치)로 명시하여야 합니다. 위의 예시에서는 CN을 chungah.kr로 하고 SAN을 www.chungah.kr로 한 것을 아실 수 있습니다.

이렇게 zmcertmgr createcsr 명령을 통해 생성한 CSR 파일은 /opt/zimbra/ssl/zimbra/commercial/commercial.csr에 생성되며, nano와 같은 텍스트 에디터로 열어 볼 수 있습니다.

SSL 인증서 발급을 진행하다 보면, 이 CSR 파일의 내용을 그 과정에서 요구할 껍니다. CSR 내용은 —–BEGIN CERTIFICATE REQUEST—– 으로 시작해서 —–END CERTIFICATE REQUEST—– 으로 끝납니다. 이것을 포함해서 CSR 을 붙여 넣으라는데에 넣어주시면 됩니다. 이 CSR이 어떤 정보를 포함고 있는지, 제대로 된 정보가 들어갔는지 https://decoder.link/ 에서 확인할 수 있습니다.

CSR 파일에 상응하는 private key 도 아래와 같이 같은 디렉토리내의 commercial.key 파일에 저장됩니다. 이 private key는 후에 Zimbra에 SSL 인증서를 설치하는 과정에서 필요합니다.

ssls.com 에서 보내준 메일의 중간 인증서에는 문제가 있음. ssls.com 홈피에서 다운 받은 번들 파일로 해야 함

2. 인증서 설치하기

CSR 을 제출하고 몇가지 인증 절차를 거치면 인증서가 발급됩니다. 메일 등을 통해 SSL 인증서와 최상단 인증기관과 중간인증기관의 공개키 인정서가 묶인 CA 번들 파일이 올 겁니다. 예를 들어 이 파일을 각각 chungah.kr.crt와 chungah.kr.ca-bundle이라 합시다. 이 파일들을 Zimbra가 설치된 서버로 업로드합니다. 서버로 업로드 한 뒤 /opt 디렉토리로 두 파일을 옮깁니다. 다른 디렉토리에 있어도 상관 없습니다만, 아래 명령어를 내릴 때 그 디렉토리와 파일을 적절하게 명시해주어야 합니다.

간단하게 얘기했지만, 메일로 받은 인증서 파일을 어떻게 Zimbra 서버로 올릴지도 문제입니다. WinSCP 같은 프로그램을 활용해도 되고, 이미 Zimbra를 운용중이면 Zimbra Briefcase 에 올린 뒤 서버에서 이 Briefcase 를 마운트해서 쓰셔도 됩니다. 그리고, 두 인증서 파일은 적절한 소유자 및 그룹이 지정되고 적절한 읽기 및 쓰기 권한이 있어야 합니다. 소유자/그룹을 zimbra/zimbra로 하고 666의 퍼미션을 주는 것이 좋습니다.

이제 인증서가 제대로 설치가 가능한지 확인하는 절차입니다. zimbra로 로그인한 상태(su – zimbra)에서 아래의 명령어를 내리면 됩니다.

확인 결과 문제가 없다고 나오면 이제 서버에 설치를 합니다. 아래 명령어를 내리면 됩니다.

인증서를 설치하다보면 여러가지 에러에 부딪히게 되는데 그 중하나가 아래와 유사한 jetty.pkcs12 와 관련한 에러가 발생하는 경우였습니다. 그 문제의 원인은 의외로 간단했는데, SSL 인증서의 끝에 엔터(carriage return)이 들어가 있지 않아서 였습니다. 인증서를 notepad 같은 것으로
—–BEGIN CERTIFICATE—– 로 끝날텐데, 마지막 대쉬(-) 뒤에 엔터를 쳐 준뒤 저장해서 쓰면 됩니다

Leave a comment

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

%d 블로거가 이것을 좋아합니다: