뭘 이런걸..

Posted
Filed under Tech/안녕리눅스
Apache 2.4.33 에 experimental 로 mod_md 라는 새로운 모듈이 추가가 되었습니다. (실제로는 2.4.30 에 추가가 되었으나, 2.4.30 이 release 되지 않고 2.4.33으로 relelase 가 되었습니다.)

ACME protocol 을 이용하여 인증서 자동 관리를 해 주는 모듈이라고 보면 됩니다. 일단은 현재 ACME protocol을 지원하는 곳이 Let's encrypt 밖에 없으므로, Let's encrypt 인증서 전용이라고 할 수 있습니다.

mod_md 모듈을 이용하면 아주 쉽게 인증서 설정 및 관리를 할 수가 있습니다. (인증서 발급 같은 것도 신경쓸 필요가 없습니다.)

일단 간단하게 예를 들자면

<VirtaulHost *:80>
ServerName oops.org
ServerAlias www.oops.org
</VirtaulHost>


이런 가상 호스트를 SSL 서비스를 하기 위하여 다음의 설정으로 간단히 가능해 집니다.

<IfModule md_module>
MDomain oops.org
MDCertificateAgreement https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf

<VirtaulHost *:443>
ServerName oops.org
ServerAlias www.oops.org
SSLEngine On
</VirtaulHost>
</IfModule>


이렇게 설정 한 후에 Apache 를 시작을 하면, oops.org 에 대한 인증서 발급을 시작 합니다. tail 명령으로 error_log 를 보고 있으면, 재시작 후 5~10초 정도가 지나면 다음과 같은 로그가 출력이 됩니다.

[root@host ~]# tail -f /var/log/httpd/error_log
[Tue Apr 10 23:53:51.043029 2018] [md:notice] [pid 88797] AH10059: The Managed Domain oops.org has been setup and changes will be activated on next (graceful) server restart.


이 로그가 출력이 되면 apache 를 다시 한번 재시작 해 주면 인증서가 자동 생성이 된 것을 확인할 수 있습니다. 더군다나, MDRenewWindow 를이용하면 자동 갱신도 가능하면, ServerAlias 의 도메인들은 SubjectAltName 으로 자동으로 등록이 됩니다. 즉, 도메인 발급 갱신에 대해서 신경을 꺼도 된다는 의미가 됩니다.

인증서는 SERVER_ROOT/md 에 저장이 되며, 이 위치는 MDStoreDir 지시자로 변경할 수 있습니다.

현재는 apache module 만 지원이 되는 듯 하며 조만간 nginx 도 지원을 하지 않을까 싶습니다.

mod_md에 대한 자세한 사항은 https://httpd.apache.org/docs/trunk/mod/mod_md.html 를 참조 하십시오.

안녕 리눅스 3에서는, httpd 2.4.33 부터 mod_md package 를 설치하여 사용이 가능 합니다.

빌드 시의 참고 사항으로는, 다음의 조건이 있습니다.

apr >= 1.5.2
libcurl > 7.50
brotli

안녕 리눅스에서는 apr 1.5.2 의 apr_escape call 을 back porting 하여 지원하였으며, brotli 는 설치 하지 않았음에도 잘 동작하는 것으로 보아 mod_md 와는 직접적인 연관이 없는 것으로 보입니다. 그리고, libcurl 도 mod_md 의 config2.m4 를 수정하여 CentOS 7의 libcurl 7.29 를 이용하여 빌드 하였으며, 아직까지는 문제점이 보이지는 않고 있습니다. 즉, apr 만 해결하면 CentOS 7에서 빌드는 그리 어려운 편은 아닙니다.

P.S.
mod_md는 mod_watchdog 모듈에 의존성이 있습니다. mod_watchdog 모듈을 mod_md 보다 먼저 load 해 주어야 합니다.
2018/04/11 00:07 2018/04/11 00:07