본문 바로가기

심오한 세상/etc

Tomcat에 SSL 설정을 한 후, Windows Services로 구동시킬경우 오류

Tomcat에서 SSL 설정을 한 후, dos창에서 "catalina.bat run"으로 구동을 시켜줄 경우 잘 돌아간다.
그리고 메시지를 확인한 후, 종료시키고 Windows Services에서 구동을 시킨다.
하지만, 접속을 시도해보면 접속이 되지 않고 멍때리는 현상을 발견할 수 있다.
에러로그를 확인해보니 아래와 같다.

2011. 10. 5 오후 5:56:59 org.apache.coyote.http11.Http11AprProtocol init

심각: Error initializing endpoint

java.lang.Exception: No Certificate file specified or invalid file format

at org.apache.tomcat.jni.SSLContext.setCertificate(Native Method)

at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java)

at org.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java)

at org.apache.catalina.connector.Connector.initialize(Connector.java)

at org.apache.catalina.core.StandardService.initialize(StandardService.java)

at org.apache.catalina.core.StandardServer.initialize(StandardServer.java)

at org.apache.catalina.startup.Catalina.load(Catalina.java)

at org.apache.catalina.startup.Catalina.load(Catalina.java)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)

at java.lang.reflect.Method.invoke(Method.java)

at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java)

2011. 10. 5 오후 5:56:59 org.apache.catalina.core.StandardService initialize

심각: Failed to initialize connector [Connector[HTTP/1.1-443]]

LifecycleException:  Protocol handler initialization failed: java.lang.Exception: No Certificate file specified or invalid file format

at org.apache.catalina.connector.Connector.initialize(Connector.java)

at org.apache.catalina.core.StandardService.initialize(StandardService.java)

at org.apache.catalina.core.StandardServer.initialize(StandardServer.java)

at org.apache.catalina.startup.Catalina.load(Catalina.java)

at org.apache.catalina.startup.Catalina.load(Catalina.java)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)

at java.lang.reflect.Method.invoke(Method.java)

at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java)


이 에러는 무엇인 것인가;;;;
오늘 하루 반나절을 허비하여 겨우 알아냈다.
역시 무지한탓에 반나절 삽질을 했구나..

참고 URL은 http://www.mail-archive.com/users@tomcat.apache.org/msg75237.html 이곳이며
핵심내용은

The above is for the Java-based connector.  The easiest thing would be to 
disable the APR code by deleting or renaming tcnative-1.dll in Tomcat's bin 
directory.

%CATALINA_HOME%\bin에 있는 tcnative-1.dll 파일을 삭제하라는 내용이다.

APR을 이용한 SSL을 사용할 경우 위 dll 파일은 꼭 있어야 하지만, APR을 사용하지않을 경우는 없어야한다는 것이다.
그리고 참고 사항으로 APR을 이용한 SSL 통신은 일반보다 속도가 빠르다고 한다.
tomcat은 그럼 이런 버그를 알고 있을까?
아니면 버그가 아니라 사용상의 부주의 인가?
아무튼 해결되서 기쁘다.