보안서버 ssl적용
관련링크
본문
보안서버 ssl적용을 했는데.
관리자 페이지에 들어가면 자물쇠모양이 나오는데..
테마적용된 쇼핑몰페이지 부분에는 적용이 안되어 나옵니다..
config.php 이부분 말고 고쳐야 될 부분이 있나요?
답변 6
이미지들이 https가 아닌 http로 연결되어 있습니다.
F12 개발자 모드에서 해당하는 코드들을 찾아 전부 https로 수정해줘야 합니다.
이미지가 루트에 있는데 수동으로 넣으신 부분이 많네요.
기다리시면됩니다
Ctrl + U (소스보기) 해서 http로 된 부분들과,
F12 키 > console 탭 부분에서 http로 인한 빨간색 에러들을 모두 해결하셔야 합니다.
http를 https 로 redirect 해주셔야 합니다.
.htaccess 를 이용하거나 httpd 를 수정해주시면 됩니다.
웹 페이지 내에 하드 코딩된 http:// 에 대한 처리 방법입니다.
보안 서버 설정 (Apache2, Let's Encrypt SSL 기준, Ubuntu)
사이트 주소 : aabb.com (가정)
제 경우는 Let's Encrypt 무료 서비스를 이용하고 있습니다.
3개월마다 갱신하는데 갱신할때에 갱신 프로그램이 신청한 사이트의 주인이 맞는지 확인하는 과정을 거치게 됩니다.
갱신 명령어 sudo letsencrypt renew
1. 지정한 폴더 ( /웹사이트저장위치}/.well-known )에 임시 파일 생성
2. Let's Encrypt 서버에 자신의 주소 ( aabb.com ) 를 보내고 신청
3. Let's Encrypt 서버는 요청자의 웹 사이트를 http 로 접속 (https아님)하여 1에서 지정한 파일이 있는지 확인
http://aabb.com/.well-known/어떤 파일
4. 모든 것이 정상적이면 ssl 인증서 갱신
---------
위와 같은 상황이므로 http://aabb.com/.well-known/ 로 시작하는 파일은 그냥 그대로 서비스 하고
http://aabb.com/다른폴더/어떤파일 의 경우는 https://aabb.com/다른폴더/어떤파일 로 바꾸길 원합니다.
Apache Conf 에서 http (80) 부분에서 지정합니다. (https (443) 아님)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/\.well\-known
RewriteRule . - [L]
<IfModule mod_ssl.c>
RewriteCond %{REQUEST_URI} !^/\.well\-known
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
</IfModule>
---------
위의 설정 설명
<IfModule mod_rewrite.c>
- mod_rewrite 모듈이 설치 되었을때만 적용
RewriteEngine on
- rewrite 엔진 시작 (사용자의 요청 주소를 다른 주소로 바꾸어 주는 서비스)
RewriteCond %{REQUEST_URI} ^/\.well\-known
- 만일 (RewriteCond) 요청자의 주소 (%{REQUEST_URI}) 가 주소 처음(^)이 /.well-known 이라면
- . 나 - 은 다른 뜻을 가진 특수 문자이므로 \ 표시로 막아 줍니다. . 라 표시 하지 않고 \.로 표기
- 특수 문자가 아니어도 \로 표기해도 문제 없습니다. A 라 해도 되고 \A 라 해도 됩니다.
- 애매하면 \ 를 붙입니다.
RewriteRule . - [L]
- 진행하라 (RewriteRule) 요청한 주소 내용(.)을 수정없이 (-) 이것으로 조건문 끝 ([L])
<IfModule mod_ssl.c>
- mod_ssl 모듈이 설치 되었을때만 적용
RewriteCond %{REQUEST_URI} !^/\.well\-known
- 만일 (RewriteCond) 요청자의 주소 (%{REQUEST_URI}) 가 주소 처음(^)이 /.well-known 이 아니라면 (!)
RewriteCond %{HTTPS} !=on
- 만일 https (%{HTTPS}) 가 켜져 (on) 있지 않다면 (!=)
- https 로 시작하지 않는 주소
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- 진행하라 (RewriteRule) 요청한 주소 내용을 처음부터 (^) 전체를
- https://요청호스트(%{HTTP_HOST}%)요청주소({REQUEST_URI})로
- 이동 (R=301 : 응답코드 301 페이지 영원히 이동) 하고
- 조건문 끝 (L)
</IfModule>
- Apache 조건문 닫음 <IfModule mod_ssl.c>
</IfModule>
- Apache 조건문 닫음 <IfModule mod_rewrite.c>
---------
Apache 명령어 (Ubuntu)
설정 체크
sudo apache2ctl configtest
module 체크
sudo apache2ctl -M
서비스 재시작 (중지했다 시작)
sudo service apache2 restart
서비스 설정파일 재적용 (중지 없음)
sudo service apache2 reload
---------
Apache conf 파일을 수정시
sudo certbot renew --dry-run
명령을 통해 SSL 갱신 명령어가 잘 작동하는지 꼭 확인해 두어야 합니다.
테스트
http://aabb.com/.well-known/test.txt 파일을 올려 두고 확인 했을 때
http://aabb.com/.well-known/test.txt
https://aabb.com/.well-known/test.txt 파일을 올려 두고 확인 했을 때
https://aabb.com/.well-known/test.txt 로 변화 없이 진행
http://aabb.com/test.txt, http://aabb.com/다른 폴더/test.txt 의 파일들은
https://aabb.com/test.txt, https://aabb.com/다른 폴더/test.txt 로 변경
https://aabb.com/test.txt, https://aabb.com/다른 폴더/test.txt 의 파일들은
https://aabb.com/test.txt, https://aabb.com/다른 폴더/test.txt 로 변화 없이 진행
브라우저에서 테스트 할 수도 있으나 캐쉬 등으로 비정상 작동할 수 있으므로 curl 등의 명령어를 이용해서 보면 정확합니다.
https://curl.haxx.se/download.html
방금 사이트를 접속해 보았습니다.
현재의 상태
http://beautyque.co.kr/ -> http://beautyque.co.kr/
http://www.beautyque.co.kr/ -> http://beautyque.co.kr/
https://beautyque.co.kr/ -> https://beautyque.co.kr/
https://www.beautyque.co.kr/ -> https://beautyque.co.kr/
입니다.
현재 웹 서버 설정으로는
www.사이트 주소를 -> 사이트 주소로 바꾸어 주는 서비스는 작동중입니다.
메인 주소뿐 아니라 하위 주소
예를 들어
http://www.beautyque.co.kr/data/item/canvas5/1212.gif
도
http://beautyque.co.kr/data/item/canvas5/1212.gif
으로 서비스 되고 있습니다.
원하는 상태
http://beautyque.co.kr/
http://www.beautyque.co.kr/
https://beautyque.co.kr/
https://www.beautyque.co.kr/
위의 모든 요청을 https://beautyque.co.kr/ 으로 변경
일 것입니다.
사용자가 웹 브라우져에서 주소를 입력할 경우 beautyque.co.kr 이렇게 입력하면
http://beautyque.co.kr/ 이 주소를 먼저 방문하게 됩니다. (검색 엔진 등에서도 이전 주소인 http:// 로 저장되어 있을 것입니다.)
해서 https://beautyque.co.kr/ 에 접속이 안 되는 걸로 보입니다.
만일 사용자가 정확하게 https://beautyque.co.kr/ 를 입력한다면 모를까 보통의 경우를 예상하여 서비스를 수정해 두어야 합니다. 검색 엔진에 이전의 주소 (http://beautyque.co.kr/어떤주소들 도 같은 문제입니다.)
http://beautyque.co.kr/ 의 주소가 아니라 http://beautyque.co.kr/어떤폴더/어떤파일명 을 요청할 경우도 있을텐데 이 경우도 모두 https://beautyque.co.kr/어떤폴더/어떤파일명 로 변경해 주는 사항까지 고려해야 합니다.
여러 방법이 있지만 웹 서버의 설정 파일에서 수정하는 방법이 최선입니다.
아파치의 웹 서버의 설정파일에서
<IfModule mod_rewrite.c>
RewriteEngine on
<IfModule mod_ssl.c>
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
</IfModule>
이라고 삽입해 두면 됩니다.
https://beautyque.co.kr/ 에 접속해 보았을때 대부분의 파일들은 https://beautyque.co.kr/파일명 으로 잘 서비스 되고 있습니다.
몇개 보이는 http://beautyque.co.kr/ 로 시작하는 주소는 관리자 설정 화면에서 찾아서 수정하시면 될 듯 합니다.
(페이지 소스 보기 http:// 으로 검색)
상세 사항은 이전 답변에 올려 두었습니다.