'Tomcat8'에 해당하는 글 8건

웃픈 tomcat 서버

Daily/Prog 2019. 8. 6. 20:55



오늘의 웃픈 에피소드.


회사에는 구성원이 있고 그들의 역할도 있고 그에 따른 책임도 있고 단계도 절차도 있다. 그것은 때로는 많은 사람들을 피곤하게 하고 더 많은 시간이 소요되는 비효율적일 때도 있다. 나에게도 이런 상황이 닥쳤지만 이 상황을 효율적으로 바꾸려면 그들이 똑똑해지거나 그들의 역할을 누군가가 도와주는 방법이 있다. 하지만 그들이 하루 아침에 똑똑해질 수는 없고 그들의 역할에 내가 침범하면 불쾌해 할 것이다. 그래서 난 그냥 비효율적으로 있기로 했다.


개발서버가 필요했다. 필요한건 tomcat 밖에 없었다. 어딘가에게 요청했다. 이 어딘가는 앞으로 열심히 서버를 만들, 서버 전문가가 되려고 준비하는 집단이다. 곧 ip 와 pem 키가 전달됐다.


putty 접속을 했는데 user 가 centos. 갑자기? 5년 동안 amazon 이나 ubuntu 만 썼었는데 갑자기 centos7 이라... 뭐 tomcat 만 쓰면되니 상관없지. 


server.xml 설정하려는데 뭐꼬 파일 어데갔노. 검색해보니 centos 홈디렉토리에다가 tomcat 을 바이너리 설치해놨네... ㅋㅋ (여기서 살짝 당황) 뭐 돌아가기만 하면 되니.


근데 뭔가 이상... 버전을 보니 tomcat7 두둥~. 이게 머하자는... 뭐 tomcat7 을 써도 되지만 굳이? 서버 관리자들이란 지들이 만드는거에 태클거는거를 좋아하지 않지만 그래도 이것만은... 정중하게 부탁했다. tomcat8 깔아줘요잉~ 곧 피드백이 왔다.


server.xml 바꾸고 톰캣 재부팅하려고 하는데 바이너리 설치해놔서 아무것도 되는게 없음. /etc/init.d, chkconfig, service, (아.. 아재...ㅋㅋ) 여기부터 슬슬 짜증이 났음. (패키지 설치했으면 끝날일을 더럽게 귀찮게 하네...)


tomcat.service 만들고 구동 user 를 tomcat 으로 지정하는 순간이 바로 삽질의 시작.


# systemctl start tomcat

Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details.


# systemctl status tomcat

Process: 14 ExecStart=/home/centos/tomcat8/bin/startup.sh (code=exited, status=203/EXEC)

tomcat.service - Apache Tomcat Web Application Container

Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)

Active: activating (auto-restart) (Result: exit-code) 


systemd[1]: Starting Apache Tomcat Web Application Container...

systemd[1]: tomcat.service: Control process exited, code=exited status=203

systemd[1]: Failed to start Apache Tomcat Web Application Container.

systemd[1]: tomcat.service: Unit entered failed state.

systemd[1]: tomcat.service: Failed with result 'exit-code'.


# journalctl -xe

tomcat.service: Failed at step EXEC spawning /home/centos/tomcat8/bin/startup.sh: Permission denied


응?? 웬 퍼미션 문제. tomcat 홈디렉토리는 tomcat 이 소유자였고 bin 디렉토리의 명령어들 역시 실행 권한이 주어져 있었다. 음... 뭐가 문제일까. 일단 권한 문제가 없는 것은 확인했고 저 203 code 의 에러가 몹시 거슬렸다. 검색해 보니 java 버전 확인과 실행 권한을 주라는 말이 대부분이었다. 일단 생성한 tomcat.service 파일을 꼼꼼히 봤다. 모든 경로, 모든 설정이 문제 없었다.


여기서 갑자기 든 생각. 이미 root 권한으로 생성된 webapps 디렉토리, log 파일들이 구동시 권한문제를 일으킬 수도 있다는 생각에 그것들도 다 삭제했다. 하지만  이놈에 tomcat 은 실행될 생각이 없다.


tomcat user 를 root 로 바꾸니 정상구동. tomcat 으로 바꾸면 에러. 어짜피 해볼만한건 이제 다해봤고 바이너리 설치니 디렉토리를 다른데로 옮겨보자 안되면 재설치하고... 그러고 /usr/local 로 옮겼는데 두둥!!! 된다!!! 뭔데 이거. 다른 사용자 디렉토리에 톰캣 설치한게 문제였던거야.


아니 의심은 했는데, 사용자 디렉토리에 톰캣 풀어논거 보고 어이가 없긴 했는데, 권한만 주면 문제없을꺼라고 생각한 내가 문제인건가? 지금도 너무 어이없음. 내가 초보자 된 느낌. 이것저것 다해서 총 6시간 삽질. 일단 되는건 봤고 너무 지저분해져서 똑같은 os 이미지로 구동시켜서 tomcat 서버 하나 만들어봤다.


yum update

yum search java-1

yum install java-1.8.0-openjdk

yum install wget

wget https://harbottle.gitlab.io/harbottle-main/7/x86_64/harbottle-main-release.rpm

rpm -Uvh harbottle-main-release.rpm

yum install tomcat8


10분 걸렸으려나... 이렇게 해줬으면 이미 끝났을 일을 가지고... ㅂㄷㅂㄷ. 이렇게 줘놓고 너희들은 편하게 쉬고 있었겠지. 후아~ 다음번 서버 요청할게 더 무섭다. 위처럼 타이핑 할 명령어들까지 전달을 해줘야 하나. 그런거야??


그래도 이런 이상한 세팅 때문에 6시간 동안 하나 배웠다. 다른 사용자 디렉토리에서 톰캣은 구동되지 않는다는 사실. 죽기전에 한번 써먹을 데가 있으려나...




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

404 Error page

Daily/Prog 2018. 9. 3. 20:25


Spring boot 1.5.9 사용 중이다. 이래저래 해서 2.x 를 사용하지 못하고 있는데, 4~50x 전역 에러 페이지 만드는게 이렇게 괴로울 줄이야 ㅋㅋ


@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
    return new MyCustomizer();
}
 
private static class MyCustomizer implements EmbeddedServletContainerCustomizer{
    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        String errorUrl = "/error";
        Logger log = LoggerFactory.getLogger("ErrorConconfiguration.class");
        container.addErrorPages(
            new ErrorPage(errorUrl)
        );
    }
}
cs


이래저래 요약하면 이 몇줄로 모든 HttpStatus 에 대한 에러는 /error 페이지를 찾아가야 한다.

나를 괴롭히는건, 로컬에서는 잘 돌아가는데 서버에만 올리면 ㅄ짓을 한다는...

안 해본게 없는거 같다. 괴롭다. 장트러블까지 생긴듯.

아무래도 서버에서는 기본적으로 어디론가 보내는 듯 하고 거기에 페이지가 없어서자꾸 404 가 뜨는듯 한데...

도저히 모르겠어서 web.xml 파일에다 때려넣었다.


...
<error-page>
   <error-code>404</error-code>
   <location>/error/404</location>
</error-page>
....
cs




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

ERR_SSL_OBSOLETE_CIPHER

Daily/Prog 2016. 9. 21. 22:30



https://www.oops4u.com/main 접속


# 사이트에 보안 연결할 수 없음

# https://www.oops4u.com 에서 지원되지 않는 프로토콜을 사용합니다.

# ERR_SSL_OBSOLETE_CIPHER


ERR_SSL_OBSOLETE_CIPHER... SSL 구식암호라... 

어제 크롬을 최신버전으로 업데이트 하고나서 발생한 오류.

지원되지 않는 프로토콜을 사용합니다... 라니...

단순히 https 일 뿐이고, IE / FF / 구크롬에서는 잘 되는 페이지인데 최신크롬에서만 안된다니!

server.xml 의 Connector 설정에는 TLS 프로토콜을 사용하도록 설정되어 있다.


현재 크롬 버전 : 53.0.2785.116 m


ERR_SSL_OBSOLETE_CIPHER 에 대해서 검색을 해봤다.

딱히 도움되는 내용은 없다 ㅡㅡㅋ 

cipher 로 검색했더니 톰캣에서는 ciphers 리스트 기본값에 보안이 취약한 cipher 가 포함되어 있어서 직접 설정하는 것을 권장(?)했다.

https://www.openssl.org/docs/manmaster/apps/ciphers.html 에서 필요한 프로토콜의 suite 를 긁으면 된다.

server.xml 파일에 아래처럼 cipher 값들을 넣어줬더니 해결되었다.



<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"

...

ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,

TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,

TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,

TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,

TLS_DHE_RSA_WITH_AES_256_CBC_SHA,

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,

TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,

TLS_DHE_RSA_WITH_AES_128_CBC_SHA,

TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,

TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,

TLS_RSA_WITH_AES_256_GCM_SHA384,

TLS_RSA_WITH_AES_256_CBC_SHA256,

TLS_RSA_WITH_AES_256_CBC_SHA,

TLS_RSA_WITH_AES_128_GCM_SHA256,

TLS_RSA_WITH_AES_128_CBC_SHA256,

TLS_RSA_WITH_AES_128_CBC_SHA,

TLS_RSA_WITH_3DES_EDE_CBC_SHA"

...

/>


L4, ELB 에 붙은 실서버들은 멀쩡한데, 왜 똑같은 Tomcat8 설정에 유독 이 개발서버 한대만 이런일이 발생했는지 모르겠지만

어쨌든 크롬에서는 이번 업데이트에 https 보안에 대해 조금더 신경을 쓴 것 뿐이고,

나처럼 cipher 설정이란 것을 모르고 있는 기업들에서는 열라 땀 삐질한 것 뿐이고,

크롬 오랫동안 참 좋게 봤는데, 이런 건방진 수준의 업데이트 할 줄이야...



WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,