Complete Virtual Mail Server/SSL Certificates/ko

도입부
오늘날 보안과 개인정보 처리는 점점 중요한 문제가 되기에, 서버 보안에 SSL을 활용하는건 쉬워 보입니다. Apache, Courier-imap, postfix 모두 SSL로 보안처리할 수 있습니다.

SSL 설치
SSL은 의존 대상이며 대부분 꾸러미에 대한 컴파일 옵션입니다. 꾸러미는 핵심 요소이며,  USE 플래그를 활용하면 끌어옵니다. 만약 활성화하고 업데이트 하기 전에 설정하지 않았다면 이 플래그를 모든 꾸러미에서 사용합니다:

SNI
단일 IP에서 다중 도메인을 활용할 때 몇가지 문제가 일어납니다. Apache는 단일 IP 상에서 여러 인증서를 보유할 수 있게 하는 SNI 를 활용하여 문제를 해결합니다. 하지만 브라우저와 서버 양측에서 이 기능을 지원해야합니다. IMAP(과 POP3) 와 SMTP 그 어느 수단에서도 실제로는 지원하지 않습니다. 단지 단일 IP상의 다중 호스트를 대상으로 인증서를 지원하는 방법은 모든 도메인을 대상으로 하는 인증서를 사용하는 방법입니다. 매력적이진 않지만 동작할 수 있습니다.

SSL 인증서 취득
There are currently 2 and a half ways to obtain an SSL certificate. Purchase a certificate from one of the reputable providers is an option. Using a self-signed certificate can also be done, though may have implications with warnings on users clients. The half option, which is the recommended option when not using a bought certificate is using a certificate from [//cacert.org cacert.org]. They are working hard on getting their certificate included into the main browsers and operating systems, but most of all, it is free and gratis.

자체 서명
대부분 프로그램에서는 자체 서명 인증서를 미리 만들어두고 에 설치합니다. 새로 자체 서명한 인증서는 OpenSSL로 쉽게 만들 수 있습니다:

이 과정에서, , 파일 세가지를 만들어야하며, 관련 CA 루트 인증서  파일도 만들어야합니다. 파일 이름이 말이 되게 하려면 이름을 바꿔두는것이 좋겠습니다.

CACert.org 서명
CACert.org에서는 SSL 인증서 생성을 돕는 간단한 스크립트를 제공합니다. csr 스크립트를 다운로드하고 실행하면 됩니다. 이 예제에서 IMAP 메일 서버는 mail, pop, pop3, pop3s, imap, foo 등의 이름을 지닌 DNS 별칭을 보유합니다. 물론 용도에 따라 더 추가할 수 있습니다. foo를 추가한 이유는 imap 서비스를 제공하는 시스템의 이름이기 때문입니다 :P postfix, 웹 또는 다른 서버에 foo라는 이름이 붙으면 foo라는 이름을 붙이지 않습니다.

CACert.org 전용이 아닌 어떤 루트 인증 기관에서든 사용할 수 있는 인증서 서명 요청을 만들었습니다. 허나, CACert.org에서는 Server Certificates에서 New라는 링크가 있는데, 여기로 들어가면 위에서 언급한 인증서 요청을 여는 편집 상자를 엽니다. 부터  를 포함하는 부분까지 편집 창에 붙여넣어야하며 submit 단추를 눌러 제출해야합니다. 서버넌 요청을 검증하고 요청에 따른 인증서를 만듭니다. 다음 인증서를 복사하여 붙여넣어야 하는데, 인증서의 내용에는  과   마커도 새  파일에 포함해야합니다. 인증서 링크는 ca-cert.org 계정에 연결한 전자메일 주소로 보낼 수 있습니다.

This should leave 3 files,. This will also be the naming convention followed during the rest of this document.

Apache
Setting up Apache is already very well described elsewhere and yields a working SSL enabled webserver. Postfixadmin, if used externally, should ideally be secured such that it only works over https. Roundcube or webmail in general, can also be setup to be secured by SSL, but should or can be still open to plain HTTP.

Roundcube has one nice option for this however, to force all incoming requests over HTTPS. This means that when a users opens http://webmail.example.com, he will get immediately redirected to https://webmail.example.com. If using a proper SSL certificate this is strongly recommended. When using a self-signed certificate, or a CA-cert.org certificate that does not have the root installed to all users, this should remain off however.

Courier-imap
If anything, securing IMAP with SSL is extremely recommended. Using a secure connection for IMAP, means that if the password is sent in plain text, this is still done over the secured IMAP connection so no security issue comes up.

자체 서명 인증서 만들기
Courier-imap comes with two easy scripts to generate self-signed SSL certificates, mkpop3dcert and mkimapdcert. These scripts parse and  respectively. It may be an idea to first use self-signed certificates and then swap those out for signed certificates as it can make testing a little bit easier. If self-signed certificates are a must, edit the aforementioned files, otherwise the defaults will suffice.

CACert.org 서명 인증서 만들기
The mkimapdcert script creates a self-signed certificate and combines them into one file as Courier-imap does actually not use the three separate files as most applications do and needs them specially formatted.

파일은 개인키로 시작합니다.

그 다음 서명 인증서를 따릅니다:

마지막으로 Diffie-Hellman 매개변수를 추가했습니다:

결과는 다음과 같아야합니다:

SSL 설정
As noted above, the certificate entails both pop3 as imap hostnames and it is thus assumed pop3 and imap are running on the same IP/host. This is not required however, pop3 could be very well a different machine with the same (not advised) or its own certificate.

POP3
서버를 시작할 때 SSL에서 pop3를 동작하게 해야합니다:

IMAP
서버를 시작할 때 IMAP이 SSL에서 동작하도록 해야합니다:

SSL 시험
Testing becomes more difficult, as telnet can not be used anymore. The best option is to start up a mail-client such as thunderbird, configure a normal connection first to verify everything works, which should as telnet worked properly before and then enable the SSL option for the account and see if it is still working. The default imap-ssl port is 993. can be checked whether it is enabled only, via telnet, by checking for the STARTTLS Capability.

기대하던대로 SSL 보안 서비스가 동작한다면 기본 런레벨에 추가할 수 있습니다:

SSL로 SMTP 보안 처리
The certificates for use with postfix should be stored in or if using the same certificates as with courier-imap they should be stored in. If using CACert.org, then its root certificate needs to be used. Gentoo pre-installs the CACert.org root certificate and should be used.

Now STARTTLS can be used to use an authenticated connection over port 25. SSL/TLS support on port 465 (smtps) however should be enabled as well. Courier-imap did this automatically, postfix needs a change to :

SSL로 보안 처리한 데몬을 시작하려면 postfix를 다시 시작하십시오:

시험
Telnet can only be minimally used for testing. Actually it can only be used to verify supported options. STARTTLS should be listed as one of the supported options:

To test if all connections work as wanted, a recent version of Thunderbird works best. When adding a new account, Thunderbird will try to connect using STARTTLS on the default port. If that would fail, or if a manual connection is tried, it's possible to use SSL/TLS via the 993 and 465 ports and hit the re-test button. This should allow the account to be created using secure connections.

서버간 연결 보안
Postfix can try to use secure connections for sending mails to other SMTP servers. Although it may not be supported by all servers, it makes sense to activate it.

다음 postfix를 다시 시작하십시오:

To test if it works, a mail can be sent to an address, which uses a server that supports TLS. The log should then contain a line like this:

마무리
Once everything is working as expected, logging can be disabled again: