이클립스 톰캣에 ssl을 적용하다 오류가 났다.
타 블로그를 참고하여 Openssl 이용해 키를 만들고 톰캣 server.xml에 설정을 추가한 뒤 실행하였다.
Invalid keystore format 오류가 발생하였다.
심각: Failed to initialize connector [Connector[org.apache.coyote.http11.Http11Protocol-443]]
org.apache.catalina.LifecycleException: 프로토콜 핸들러 초기화가 실패했습니다.
at org.apache.catalina.connector.Connector.initInternal(Connector.java:1115)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:571)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:874)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
at org.apache.catalina.startup.Catalina.load(Catalina.java:646)
at org.apache.catalina.startup.Catalina.load(Catalina.java:669)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:305)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
Caused by: java.lang.IllegalArgumentException: Invalid keystore format
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:108)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:72)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:205)
at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1221)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1234)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:230)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:633)
at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:80)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:1112)
... 13 more
Caused by: java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
at java.security.KeyStore.load(KeyStore.java:1214)
at org.apache.tomcat.util.security.KeyStoreUtil.load(KeyStoreUtil.java:69)
at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:216)
at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:207)
at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:282)
at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:246)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:106)
... 21 more
실행하는 환경
이클립스
톰캣버전 : 8.5
톰캣 JRE : 7
JRE 8 환경에서 실행하면
해당오류가 발생하지는 않았다.
그래서 자바 1.7 환경에서는 TLS default 1.0 이라 발생하는 문제인것 같아서
톰캣서버-EditConfiguration -VM argument 에 설정을 추가하여
-Dhttps.protocols=TLSv1.2 -Djdk.tls.client.protocols=TLSv1.2
진행하였는데 문제는 해결되지 않았다.
해결은 간단했다.
톰캣 server.xml에서 SSL 설정 하는 부분에
keystoreType="PKCS12" 추가하였더니 오류는 발생하지 않았다.
수정 후 톰캣 server.xml 설정
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/키스토어가있는 디렉토리/.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS" keystoreType="PKCS12" />
참고.
https://lts0606.tistory.com/220#
테스트용 SSL 톰캣 적용기 (SSL Tomcat, OpenSSL)
테스트용 SSL 인증서를 회사에 요청했는데...알아서 하세요(?)라는 대답이 돌아왔다. 이를 극복하기 위해 구글링하며 정리한 내용을 기록하여 보았다. 적용시킬 대상은 Tomcat 8.0 서버이다. 먼저 ssl
lts0606.tistory.com
https://ls-altr.tistory.com/70
SSL 통신을 위한 WAS 내 Java 설정_https 호출
WAS 내 JSP 파일등을 통해 https 통신이 필요한 경우, SSL Protocol을 사용하게 된다. 여기서 WAS가 사용하는 Java 버전 및 옵션 적용 유무에 따라 통신/인터페이스시 오류가 발생할 수 있다. 조치를 위해
ls-altr.tistory.com
https://stackoverflow.com/questions/33335979/tomcat-8-invalid-keystore-format
Tomcat 8: Invalid keystore format
I try to configure SSL into my new project. I do it for the first time and i got some problems. Some items to the projects: A part of my server.xml: <Connector port="8443" protocol="org.apa...
stackoverflow.com
톰캣 JDK 1.7로 구동되는 환경에서 TLS1.2 통신되게 설정하기
이전에 작성한 글에 이어서 2탄입니다. 이전에 작성한 글에서 JDK 1.7은 TLS1.0이 기본값이고 이로인해 Spring 프레임워크 사이트와 통신이 안 되어 xsd 파일을 못 불러오는 문제가 있었죠. 그 당시에
gaesae.com
'개발 > 에러 해결' 카테고리의 다른 글
[Apache 2.4] bad-bot-blocker (0) | 2024.08.12 |
---|---|
잔디먹는뱀 workflow build 오류 시 (2) | 2023.03.23 |
org.xml.sax.SAXParseException : <HR> (0) | 2022.07.26 |
[큐브리드] 윈도우 설치 시 한글 문자 깨짐 해결 (0) | 2022.05.17 |
[스프링]model 값에 자바객체를 넣고 jsp에서 jstl로 이용시 주의점 (0) | 2022.03.31 |