태그:                 

우분투에 아파치, PHP7, MySQL을 설치하고 SSL을 적용하다보니 할게 많기도 하고, 잘 모르니 하는 것도 어렵고…글로 남겨본다.

1. letsencrypt 인증서 받기

아래의 명령으로 우분투에 letsencrypt 패키지를 설치한다.

sudo apt-get install letsencrypt

이 패키지가 기본 설치프로그램인 경우도 있으므로 이미 설치되어 있을 수도 있다. 패키지 설치 후 아래의 명령으로 원하는 도메인명을 다 추가해서 인증서를 받는다.

sudo letsencrypt certonly --webroot --webroot-path=/var/www/homedir -d sitename.com -d www.sitename.com

프로세스가 진행되면 이메일 주소를 입력하라고 나오는데, 기한이 되면 연락받을 수 있는 메일주소를 입력한다. 그 후 물어보는게 두 가지 있는데, 첫번째에는 Y를 입력해야 인증서가 발급되고, 두번째는 선택사항이라 N을 입력해도 된다.

인증파일은 cert.pem, chain.pem, fullchain.pem, private.pem 파일이며, /etc/letsencrypt/live/서버명 폴더에 저장된다. 이 중 Apache2 서버에서는 cert.pem, chain.pem, privkey.pem 을 사용한다.

2. 아파치 설정하기

vi나 nano 등의 에디터를 이용해서 /etc/apache2/sites-available에 있는 아파치의 설정 파일 중 위에서 인증서를 받은 도메인명에 해당하는 설정에 아래와 같이 https 포트에 해당하는 가상머신을 추가한다.

sudo vi /etc/apache2/sites-available/sitename.com.conf

<virtualhost *:443="">
	#main domain
	ServerName sitename.com
	#additional domain
	ServerAlias www.sitename.com
	#document Root
	DocumentRoot /var/www/sitename/
	#additional setting
	
		Options FollowSymLinks MultiViews
		AllowOverride All
		require all granted
	
	AssignUserID siteuser siteuser
	ErrorLog ${APACHE_LOG_DIR}/sitename.com-error.log
	CustomLog ${APACHE_LOG_DIR}/sitename.com-access.log combined
	Header always set Strict-Transport-Security "max-age=31536000"
	SSLEngine on
	SSLProtocol -all +TLSv1.2 +TLSv1.3
	SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
	SSLHonorCipherOrder on
	SSLCertificateFile "/etc/letsencrypt/live/www.sitename.com/cert.pem"
	SSLCertificateKeyFile "/etc/letsencrypt/live/www.sitename.com/privkey.pem"
	SSLCertificateChainFile "/etc/letsencrypt/live/www.sitename.com/chain.pem"
<virtualhost>

위 설정에서 SSLProtocol -all +TLSv1.2 +TLSv1.3 부분이 TLS 중에서 TLS 1.2와 TLS 1.3만 두고 나머지는 다 서비스 프로토콜에서 제외하는 것이다.

위 설정을 다 적용하기 위해 아파치를 다시 시작한다.

위 설정이 다 적용되면 아래의 링크에서 사이트의 인전도를 검증해본다.

https://www.sslshopper.com/ssl-checker.html#hostname=www.sitename.com

위의 시험항목은 아래 그림처럼 모두 퉁과해야 된다.

https://www.ssllabs.com/ssltest/analyze.html?d=www.sitename.com

위의 시험항목은 아래 그림처럼 A가 나와야 안전하다 할 수 있다.

만약 아래와 같이 A가 안나오면 보안에 문제가 생길 수 있으므로 필요한 부분을 찾아서 등급을 올릴 필요가 있다.

관련글

Apache에 SSL 설정하기

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다