
오늘은 Apache + Ubuntu환경에서 무료 SSL인증서인 letsencrypt 적용하는 방법을 알아보겠습니다!
패키지 설치
긴급갱신 및 보안 고지의 경우 연락을 취할 수 있는 이메일 주소를 입력해 줍니다.
약관을 읽고 ACME 서버에 등록하기 위한 동의입니다.
스팸 이메일 수신 동의입니다.
발급에 이상이 없다면 위 이미지처럼 발급이 완료되었다는 메시지가 나옵니다!
에러
만약 발급이 정상적으로 되지 않고
이런 식의 에러가 난다면 의심해 볼 건
1. 포트가 열려있지 않음 (DNS 설정)
2. 도메인을 잘못 적음
3. 권한문제
정도가 있을 것 같습니다! 에러가 나는데도 계속 시도를 하다 보면
too many failde라는 오류가 발생하는데 해당 오류가 발생하면 약 30분 정도는 시도를 못하게 되니 주의 바랍니다 ㅠ
이제 SSL을 적용해야겠죠!
SSL 적용
SSL 적용을 위해
# vi /etc/apache2/sites-available/000-defualt.conf
명령어를 실행하여 conf 파일에 접근 후
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "인덱스 페이지경로"
# <Location />
# AuthType Basic
# AuthName ""
# AuthUserFile /etc/apache2/sites-available/.htpasswd
# Require valid-user
# Order allow,deny
# Allow from all
# </Location>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
위 사항대로 적용을 해주시면 되는데 DocumentRoot에는 index.html, index 등 페이지의 경로를 적어주시면 됩니다.
그리고 주석처리해 놓은 Location이 있는데 혹시나 접근 시 Basic으로 걸어두셨다면 해제 후 적용을 해야 되는 것 같습니다.
하단에 mod_rewrite.c가 보일 텐데 해당 부분은 http로 접근 시 https로 리다이렉트 하는 설정이므로 필요하신 경우 해당 설정도 추가해 주세요! 해당 설정을 하시고
# a2enmod rewrite
로 활성화 해주세요 ~!
000.conf의 설정은 끝났고 이제
# vi /etc/apache2/sites-available/default-ssl.conf
로 ssl.conf파일을 수정해 줍니다!
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot "인덱스 페이지경로"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1
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
SSLCertificateFile "/etc/letsencrypt/live/"발급받은 도메인"/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/"발급받은 도메인"/privkey.pem"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
JkMount /* bms
</VirtualHost>
처음 들어갔을 때 있는 주석들은 제거하셔도 되고 위 설정대로 하시면 됩니다.
SSLProtocol과 SSLCipherSuite에 대한 설명은 밑에 적어두겠습니다.
SSLProtocol:
이 설정은 Apache 웹 서버가 사용할 SSL/TLS 프로토콜 버전을 지정합니다.
일반적으로 SSLProtocol 지시문은 Apache가 지원하는 SSL/TLS 프로토콜을 나열하는 데 사용됩니다. 이것은 클라이언트와 서버 간의 SSL/TLS 연결에서 사용할 수 있는 프로토콜을 결정합니다.
예를 들어, SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1와 같이 사용하면 모든 SSL/TLS 버전을 활성화하고 SSLv3, TLSv1, TLSv1.1은 비활성화됩니다.
SSLCipherSuite:
이 설정은 서버에서 허용할 SSL/TLS 암호화 알고리즘의 목록을 지정합니다.
SSLCipherSuite 지시문은 클라이언트와 서버 간의 SSL/TLS 연결에 사용할 수 있는 암호화 알고리즘을 제어합니다.
일반적으로 안전한 암호화 알고리즘과 키 교환 방법을 선택하여 보안 강화를 위해 사용됩니다.
예를 들어, SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4와 같이 사용하면 강력한 암호화 알고리즘을 선호하고 중간 수준의 보안을 유지합니다.! aNULL은 인증되지 않은 NULL 암호화를 허용하지 않고! MD5와! RC4는 각각 MD5 해시 및 RC4 암호화를 비활성화합니다.
SSLHonorCipherOrder on과 같이 설정하면 서버는 SSLCipherSuite에서 정의된 암호화 알고리즘 순서를 엄격하게 준수하여 클라이언트가 제시한 암호화 알고리즘 목록에서 적절한 암호화 알고리즘을 선택합니다.
ssl.conf 활성화를 위해 명령어를 실행해 줍니다.
# a2ensite default-ssl.conf
a2ensite는 conf파일 활성화고 혹시나 비활성화하시려면
# a2dissite defualt-ssl.conf
를 해주시면 비활성화됩니다 ~
자! 이제 모든 설정이 끝났으므로 한번 확인을 해볼까요!
적용한 도메인으로 https 접근을 하시면 정상적으로 적용이 된 것을 확인하실 수 있습니다!
여기까지 SSL 인증서 적용을 알아보았습니다!!
모두 이상 없이 적용하시길 ~!!!
태클은 환영!
'Linux' 카테고리의 다른 글
[Ubuntu] docker, docker-compose설치 (0) | 2024.07.31 |
---|---|
[CentOs] 폐쇄망에서 yum사용법 (0) | 2024.07.09 |
[Linux] vi로 수정 시 여러줄 한번에 주석 OR 주석해제 (0) | 2024.06.05 |
[Apache] 아파치 기동이 오류가 날경우 에러확인 (0) | 2024.04.16 |
[SVN] Skipped 'filename' -- Node remains in conflict 에러 (0) | 2024.01.26 |