CI 묻고 답하기

제목 SSL 관련 질문 드립니다.
글쓴이 Densetsu 작성시각 2013/09/09 11:58:05
댓글 : 12 추천 : 0 스크랩 : 0 조회수 : 20755   RSS
안녕하세요.
궁금한 사항이 있을 때만 질문을 드리네요;
SSL 테스트가 어려운게 테스트 도메인을 따서 하기도 애매한지라.. 쿨럭;
잡솔 그만하고.. 질문 드리겠습니다.

현재 셋팅을 말씀 드리자면 SSL 구매해서 적용했구요. 포트는 6000번을 사용중입니다.
http://www.도메인 -> 접속 되구요
https://www.도메인:6000 -> 접속 됩니다.

로그인 할 때만 form action 값에 https://www.도메인:6000/login_action 뭐 이렇게 해놨습니다.
그리고 로그인이 완료될 경우 http://www.도메인 으로 다시 돌아옵니다.

여기서 문제가 있네요. https -> http 로 넘어오면 로그인이 풀려버립니다. (풀리는건지 아예 안되는건지;)

프로토콜 문제인가 싶어서 아예 처음부터
https://www.도메인:6000 으로 시작해서 (https -> https) 로 테스트 해봤는데도 안돼네요;

https://www.도메인:6000/login_action 여기서 페이지 넘어가기 전에 세션 생성값을 찍어보면
ID 등이 정상적으로 찍히는데 
http://www.도메인 이렇게 넘어오면 세션값이 그냥 사라집니다;
($this->session->all_userdata() 요놈으로 찍어봤습니다. 물론 https 안 붙이고 로그인 테스트 하면 잘 됩니다.)

이러면 의심할만한 사항이
1. session.auto_start
2. ssl.conf

였는데 http.conf 쪽 봐도 설정을 동일하게 해놨습니다. session 도 마찬가지구요;

SSL 설치는 서버 관리해주는 업체쪽에서 설치해줬구요.
CodeIgniter 특성상 index.php 안 보이게 하려고 ssl.conf 쪽에
RewriteRule ^/app/(.*)$ /app/index.php/$1 [L]
이 부분을 임의로 추가한 상태입니다. (없으니 페이지 못 찾는다고 나와서;)

긴글 읽어 주셔서 감사합니다;
서버 설정 문제인지 CodeIgniter 쪽 설정을 더해줘야 하는건지 잘 몰라서.. 적게 되었습니다.
혹시 제가 간과하고 있는 부분이나 체크할 부분이 있으시면 조언 부탁 드리겠습니다.
감사합니다.
 다음글 개발하다가 ... (7)
 이전글 교재 소스 오류 모음 (7)

댓글

들국화 / 2013/09/09 12:19:16 / 추천 0
저도 저렇케 사용 하는데... 별 문제는 없는듯 하네요.

다만 아래 rewriterule을 보니 document root가 잘못 되어서 그런듯 하네요..
Densetsu / 2013/09/09 13:06:26 / 추천 0
들국화 //

관심가져 주셔서 감사합니다. 비슷하게 했음에도 전 안돼니.. 절망이네요 ㅠㅠ
현재 http.conf 쪽에 VirtualHost 세팅에도

RewriteRule ^/app/(.*)$ /app/index.php/$1 [L]

이러한 옵션이 있어서 ssl.conf 쪽에도 동일하게 추가해 놓은 것입니다. ㅠㅠ
저렇게 하니 페이지는 잘 찾는데 로그인 문제가.. 쿨럭;

혹, 잘못 되었다고 판단이 되시면 어떻게 수정하면 될까요?;;
아는게 워낙에 없어서리;

아참..  추가로..
최초에 http://도메인 접근시 http://www.도메인/app 가 기본입니다.
물론 https://www.도메인:6000/app 도 접근 됩니다.
감사합니다.
변종원(웅파) / 2013/09/09 13:21:54 / 추천 0
주요정보 빼고 config.php 올려주세요. (세션, 쿠키쪽)
들국화 / 2013/09/09 13:23:16 / 추천 0
app을 붙이는 이유가 있나요?

CI에서는 기본적으로 app 이렇케 붙으면 컨트롤러로 인식 합니다.

아파치에서 DocumentRoot를 app으로 잡으시고, CI 에서는 app이거를 제거하세요.
Densetsu / 2013/09/09 13:32:51 / 추천 0

웅파 //

항상 감사합니다;
config.php 파일이면 아래 정보를 말씀하시는건가요?;
아니면 다시 한번 말씀해 주시면 감사 드리겠습니다. ㅠ

$config['sess_cookie_name']  = 'test';
$config['sess_expiration']  = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name']  = 'test';
$config['sess_match_ip']  = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 10;

$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path']  = "/";
$config['cookie_secure'] = FALSE;

$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

보니까 상단에 header 로 P3P 설정 해놨네요.
대략 이 정도입니다.
아.. Session Table 설정이 있어서 말씀드리지만.. Session 관련해서 DB는 사용하지 않습니다.
감사합니다;

--------------------------------------------------------------------------

들국화 //

최초에 제가 설치한게 아니라서;
처음부터 도메인/app 를 쓰더라구요 ㅎㅎ;
현재 사이트를 잘 사용중인걸로 봐서는 app 쪽을 컨트롤러로 인식하지는 않은 듯 싶습니다;
뭔가 설정을 해놨나.. 관련해서 깊이 신경쓰질 않아서요 ㅎ
암튼.. 관심 감사합니다 (--) (__)

한대승(불의회상) / 2013/09/09 14:45:37 / 추천 0
코드이그나이터 설정 더 이상 건들 부분은 없어 보입니다.

https를 통하여 로그인 후 접근하고자 하는 url에 https 로 접근하면 세션 정보가 나오는지 궁금하네요.
Densetsu / 2013/09/09 14:54:48 / 추천 0
불의화상 //

관심 감사합니다. (__)

1.
1) Form Action = https
- 처리 페이지에 Request 값 문제 없음.
  넘어가기 전에 세션값 만듦. 
  여기서 만든 세션값 문제 없음. 정상적으로 세션 생성.
  세션을 만들고 메인으로 창 이동.
2) 세션 생성 후 Redirect Page = http, https (둘다 해봤습니다)
- 창 이동 후 세션값이 사라짐; ㅠ

2.
2) Form Action = http
- 위와 같음.
2) Redirect Page = http
- 로그인 됨.

제가 볼 때도 CodeIgniter 설정값 문제가 아닌거 같고;
왠지 느낌상 ssl.conf 쪽 설정 문제인거 같기도 한데요.
명확하질 않아서요; 여기저기 확인해보고 있습니다;

보통 http.conf 설정파일하고 ssl.conf 파일 페이지 인식하는 부분은 설정 비슷하게 하지 않나요?
더 추가해야 할 내용이 있나;
쩝; ㅠㅠ
다시 한번 관심 감사합니다.
Densetsu / 2013/09/09 15:21:05 / 추천 0
혹시.. 참고가 될까해서..
아래는 ssl.conf 쪽 설정인데요.

1)  <Directory [HOME경로]>
    SSLOptions +StdEnvVars
    Options -ExecCGI
    Order Deny,Allow
    Allow from all
  </Directory>

2)  LogLevel warn

3)  <FilesMatch "\.(cgi|shtml|phtml|php?)$">
    SSLOptions +StdEnvVars
  </FilesMatch>

1. [HOME경로] 라고 표시한 부분은 상단에 선언한 DOCUMENT_ROOT 경로와 같아야 하나요?
2. 2) FilesMatch <- 요 옵션이 좀 거슬리는데; 이것도 저렇게 된게 맞을까요?
3. 혹시 오류가 나는지 ssl error 로그 뒤져봐도 안나오네요; LogLevel warn 은 높게 설정하면 나오려나요;

아닐수도 있지만; 의심스러운 부분이라서요 ㅎ;
참고해 주시기 바랍니다 ㅠ
변종원(웅파) / 2013/09/09 17:46:49 / 추천 0
db세션을 사용하면 세션이 하나더 생기는지 확인을 금방 할 수 있을 것 같은데요..

로그인하고 다른페이지로 이동했는데 세션이 사라지는 경우중 하나의 케이스가 세션이 하나더 생기는 겁니다.

userdata가 들은 로그인된 세션과 빈 세션이 하나 더 생겨서 로그인 안한걸로 나오는거죠.

$config['sess_match_useragent'] = TRUE;   이 값을 false로 바꿔보세요.
Densetsu / 2013/09/09 19:08:32 / 추천 0
웅파 //

신경써 주셔서 감사합니다 (__)
config.php 파일에서
$config['sess_match_useragent'] = TRUE;   를 FALSE 로 변경했는데도 마찬가지네요 ㅠ

말씀해주신 것처럼 뭔가 초기화 되는 느낌이긴 합니다;
기존에 있는 session_id, ip_address, user_agent, last_activity 등의 세션값은 있는데
새로 생성한 세션 데이터들은 아예 없어졌네요;
형태도 없이 말이죠 ㅎㅎ;

답답할 따름입니다.. ㅠ
다양하게 테스트 해 보는 방법 밖에는 없을 듯 싶네요 ㅠ
답변 감사 드립니다 (___)
Densetsu / 2013/09/10 17:46:30 / 추천 0
자답입니다.

결과부터 말씀드리면 포트를 없애서 문제를 해결했습니다.. ㅠ
https://www.도메인:6001 -> https://www.도메인 (기본 포트 443을 쓰면 저렇게 표시 가능)
설정을 어떻게 해놨는지 원; 원래 이런건지는 잘 모르겠는데요;

문제는 도메인 뒤에 포트였네요 ㅎㅎ;
세션 생성할 때 도메인이 들어가는데
기본적으로 cookie_domain 이런 변수로 설정이 되는데
포트를 안 붙이면 www.도메인 이렇게 들어가는데 붙이면 www.도메인:6001 이렇게 들어가니까
서로 매칭이 안됐나보더라구요.

나중에 포트 변경해서 다시 테스트 해봐야겠지만
혹시라도 SSL 작업하실 때 로그인 처리되는 부분에 저런식의 도메인을 쓰신다면
세션 만들 때 만이라도 포트번호 치환해서 사용하면 큰 문제는 없을 듯 싶습니다.
실력도 없는데 한 이틀 고생했더니 머리 터지겠네요 ㅎㅎ;

막연한 질문에 답변주신 들국화, 웅파, 불의화상님 다시 한번 감사하다는 말씀드리고 싶습니다.

저와 비슷한 상황의 분들이 계신다면 참고하세요 ㅠ
감사합니다.
들국화 / 2013/09/10 18:03:06 / 추천 0
저는 디폴트 포트 써서 문제가 없긴 했었는데..

포트도 문제가 되는군요...

포트가 다른게 이상하다 생각은 했지만 문제가 없다고 생각 했는데...

데이타베이스 세션을 쓰면 문제 없을듯도 한데... 

고생하셨네요...