[해결] https가 jsp를 못읽어요~
안녕하세요, 도움 신청하고 싶습니다.
저는 jsp를 이용하여 간단한 로그인 페이지를 만들려고 합니다.
Apache 5.5를 서버로 이용하고,Tomcat 2.2를 jsp 해석기로 이용하고, mysql을 DB로 이용하고 있습니다.
힘들게 연동을 시켜서 로그인 페이지에 성공하였고 사용자 추가 및 수정에도 성공하였습니다.
문제는 http가 안전하지 못하여서 https로 바꾸려고 하는데 생겼습니다.
우선 Apache를 무시하고 Tomcat 자체의 서버를 이용하면 제 .html .jsp 파일들이 문제없이
http / https 로 모두 열립니다.
한지만 Apache를 켜고,http로 접속시에는 문제없지만 https를 통하여 Apache HTTP Server로 제 .html .jsp 파일들에 접속하면,
우선 .html은 문제가 없이 열리지만 .jsp 파일에서는 전혀 javascript를 컴파일하지 못해서
제 기능을 못합니다.
.jsp파일 까지는 접속하지만, mysql의 DB에 있는 정보에도 전혀 접근을 못하고,
심지어는 페이지 자체내의 jsp 코드의 변수들조차 못 인식합니다.
가상호스트로 ssl을 설정해놓았습니다.
인터넷에서 많은 써칭을 해봤지만 도움이 안되서 여기에 이렇게 올려봅니다.
많은 도움 부탁드립니다.
제 모든 프로그램 상황:
Apache HTTP Server 5.5
Apache Tomcat 2.2.8
MySQL 4.1
MySQL -FRONT
mod_jk.so
OpenSSL
ModSSL
EditPlus
첨부파일에는:
Apache - conf - httpd.conf
Apache - conf - mod_jk
Apache - conf - workers
Tomcat - conf - server.xml
Tomcat - conf - web.xml
을 올립니다.
무엇이든 도움이 될만한 조언 많이 부탁드리고,
추가로 알아야 하는 사항이나 문서가 있다면 바로 올려놓겠습니다.
감사합니다~
첨부 | 파일 크기 |
---|---|
![]() | 23.25 KB |
진짜 신기하네요!
ㅋㅋ 답답해 죽겠지만 이건 참 신기하네요
제가 전에 올렸다시피
Tomcat -> http -> OK!
Tomcat -> https -> OK!
Apache -> http -> OK!
Apache -> https -> X
였는데요,
가만히 보니까 우선 Tomcat을 꺼놔도
Apache -> https 가 jsp 파일을 읽네요.
탐켓 없이 아파치가 jsp파일을 읽어서 웹에다 띄움니다.
기본적인 javascript도 다 하는거 같네요.
대신 한가지, request.getParameter();
와 같은 함수가 전혀 안되고 페이지 시작할때
<.% %.> 쪽과 <.javascript ... 쪽이 전혀 연결되지 않습니다
(.은 원래 코드에는 없음)
도데체 왜 이런지 아시는분~
---------------------------------------------------------------------
조금 더 자세히 관찰해 본 결과
Apache의 httpd.conf에서
내에서
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "C:/Apache2.2/conf/kidae.crt"
SSLCertificateKeyFile "C:/Apache2.2/conf/kidae.key"
를 키면 아파치가 jsp를 톰켓 없이 읽고,
끄면 못읽내요. 어떻게 보면 당연하네요. 그 부분 없이는 https 자체가 안 돌아가니까.
문제는 이게 아닐 가능성이 크군요..
인용:가상호스트로
mod_jk의 가상호스트에 ssl 포트 지정을 하셨는지? 80도 있고, 443도 있습니까?
----
I paint objects as I think them, not as I see them.
atie's minipage
----
I paint objects as I think them, not as I see them.
atie's minipage
제 mod_jk 입니다
########## Auto generated on Fri Feb 15 19:47:33 KST 2008##########
LoadModule jk_module "C:/Apache2.2/modules/mod_jk.so"
JkWorkersFile "C:/Tomcat 5.5/conf/jk/workers.properties"
JkLogFile "C:/Tomcat 5.5/logs/mod_jk.log"
JkLogLevel emerg
ServerName localhost
JkMount /manager ajp13
JkMount /manager/* ajp13
JkMount /webdav ajp13
JkMount /webdav/* ajp13
JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13
JkMount /tomcat-docs ajp13
JkMount /tomcat-docs/* ajp13
JkMount /host-manager ajp13
JkMount /host-manager/* ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
JkMount /balancer ajp13
JkMount /balancer/* ajp13
-------------------------------------------------------
포트 지정은 어떻게 해야 하나요? 저는 지금 80 기본 포트를 이용하지 않고 있습니다.
Apache http server의 http를 8080
Apache http server의 https를 443
Tomcat server의 http를 8000
Tomcat server의 https를 8443으로 해놨어요.
일단 httpd에서 가상호스트 ssl을 설정 해노면 안되나요?
mod_jk는 어떻게 수정해야 하나요?
대단히 감사합니다!
LoadModule jk_module modules/mod_jk.so 는 필요없나??
계속 알아보는 와중에 또 이상한 점을 발견 하였씁니다.
아파치에서 톰켓 없이 jsp가 되는게 이상해서 이것 저것 해보눈 와중에,
아파치의 httpd.conf파일에서
LoadModule jk_module modules/mod_jk.so 파일을 #로 주석처리해도
아파치 https는 아직 .jsp를 열고 있습니다.
또한 아파치 http server 모니터에서도 밑에 mod_jk/1.2.19도 여전히 뜨네요.
그리고 이 상태에서 Tomcat을 키고, Apache 포트로 (http) .jsp에 접속해도
돌아가고 다 띄우네요. 어떻게 Apache https는 톰켓 없이도 .jsp를 돌리고,
http는 mod_jk.so없이도 연동이 되나요?
통 이해가 안가네요..
단, Include "C:/Tomcat 5.5/conf/jk/mod_jk.conf"을 주석 처리 하면 Apache http server가
가동되지 안네요..
하지만, 그와함께 LoadModule ssl_module modules/mod_ssl.so도 주석처리해주면 또 되네요..
해결 했습니다
드디어 해결했습니다.
안될것 같더니 끝까지 매달리니까 되네요 ^^
결국 문제는 윗 분께서 말씀해주신 mod_jk.conf 파일에서 가상호스트의 추가 설정이었습니다.
이 부분은 인터넷을 다 뒤져도 안나오던데..
다들 httpd만 수정하라고 나오나, mod_jk.conf에서 수정이 빠져있었네요.
어찌 됐든 제 수정된 mod_jk.conf 파일 올립니다.
비슷한 문제 있으신 분에게 도움이 됐으면 합니다!
ServerName localhost DocumentRoot "C:/Tomcat 5.5/webapps/ROOT"
JkMount /manager ajp13
JkMount /manager/* ajp13
JkMount /webdav ajp13
JkMount /webdav/* ajp13
JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13
JkMount /tomcat-docs ajp13
JkMount /tomcat-docs/* ajp13
JkMount /host-manager ajp13
JkMount /host-manager/* ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
JkMount /balancer ajp13
JkMount /balancer/* ajp13
ServerName localhost:443 DocumentRoot "C:/Tomcat 5.5/webapps/ROOT"
ServerAdmin admin@localhost
ErrorLog logs/error.log
TransferLog logs/access.log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "C:/Apache2.2/conf/kidae.crt"
SSLCertificateKeyFile "C:/Apache2.2/conf/kidae.key"
#SSLCACertificateFile "C:/Apache2.2/conf/kidae.crt"
#CA : Certificate Authority
SSLOptions +StdEnvVars
Options Indexes FollowSymLinks
SSLOptions +StdEnvVars
Order allow,deny
Allow from all
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "C:/Apache2.2/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Order allow,deny
Deny from all
Satisfy All
JkMount /manager ajp13
JkMount /manager/* ajp13
JkMount /webdav ajp13
JkMount /webdav/* ajp13
JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13
JkMount /tomcat-docs ajp13
JkMount /tomcat-docs/* ajp13
JkMount /host-manager ajp13
JkMount /host-manager/* ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
JkMount /balancer ajp13
JkMount /balancer/* ajp13
우선 그대로 copy paste 한다고 되는게 아닙니다.
제가 워낙 힘들었기에 몇가지 추가 팁 드릴게요.
ajp13 대신에 당신이 지정하신 worker의 이름 쓰셔야 하고..
포트도 당신이 http와 https에다가 지정하신 포트 쓰셔야 하고..
Directory Root도 당신이 지정하신 root로 바꾸세요..
이상입니다~
이글에서 힌트를 많이 얻었습니다. 너무 고마워서 저도 올립니다.
아파치2 + 탐캣9 + mod_jk 1.2 입니다.
ssl 적용후 같은 문제에 봉착햇엇으며
이분의 힌트 + 제 노가다로 해결했습니다.
server.xml은 http포트가 몇이든 상관없으며 (기본 8080이죠. 보안상 아예 주석시킴이 좋음)
ajp 커넥터 포트를 8009 리다이렉트 8443 해줬으면 8443 커넥터에는 ssl jsk파일이 적용되어야 합니다.
/>
이 두줄이 적절한데에 있어야 되구요.
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
워커.프로파일스 파일입니다. 워커1개만 있어도 됩니다.
Include conf/extra/httpd-ssl.conf
저는 ssl때문에 이 파일을 썼습니다.
그리고 mod_jk.conf 도 썼었는데 안되더라구요. 실력부족인지도.
그래서 이 파일 내용을 각각 httpd.conf 와 위의 ssl.conf에 나누어썼습니다.
httpd-ssl.conf 내용엔
JkMount /*.jsp worker1
JkMount /*/servlet/* worker1
저 두줄을 마지막줄인 앞에
이렇게
httpd.conf 에는 끝부분에
#================================================
# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module modules/mod_jk.so
# Declare the module for (remove this line on Apache 2.x)
# AddModule mod_jk.c
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile conf/workers.properties
# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile logs/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Send everything to worker named worker1 (ajp13)
JkMount /*.jsp worker1
JkMount /*/servlet/* worker1
# JkOptions +ForwardURIEscaped
#==============================================
를 넣었습니다.
다해도 아파치 시작하면 에러창 뜰거에요. 당황하지 마시고 재부팅해야만 적용되는 부분도 있더라구요.
저도 안되다 재부팅하니 잘되더라구요.
댓글 달기