-
SSL 인증서 발급
-
openssl을 이용해 ssl 인증서 발급 (https://sourceforge.net/projects/openssl/files/latest/download?source=typ_redirect)
-
openssl 다운로드 후 C: 밑에 압축 해제
-
관리자 권한으로 cmd 실행 후 openssl/bin/ 경로에서 openssl.exe 실행
-
C 밑에 풀지 않으면 아래와 같은 경고가 뜰 수 있다. 이러면 CSR 을 만들 때 openssl.cnf를 찾지 못해 실행할 수 없다.
-
그리고 실제로 openssl.cnf 파일은 bin 밑에 있으니 이 파일을 OpenSSL 밑으로 옮겨주자
-
WARNING: can't open config file: C:/OpenSSL/openssl.cnf
cd C:/OpenSSL/bin
openssl.exe
2. 개인키 발급
-
gensa -des3 -out 키이름 2048 (-des3을 빼면 비밀번호 없는 private 키 발급 가능)
genrsa -des3 -out private.key 2048
3. 공개키 발급
-
rsa -in 개인키이름 -pubout -out 공개키이름
rsa -in private.key -pubout -out public.key
4. CSR 인증 요청서 만들기
-
req -new -key 개인키이름 -out CSR이름
req -new -key private.key -out private.csr
그리고 인증서 신청서를 작성한다(국가코드, 도시, 회사명 등)
5. 인증서 만들기(CRT)
-
req -x509 -days 기간 -key 개인키이름 -in CSR이름 -out CRD이름 -days 기간
req -x509 -days 365 -key private.key -in private.csr -out mycrt.crt -days 365
6. pkcs12로 변경
-
pkcs12 -export -in CRT이름 -inkey 개인키이름 -out .keystore -name tomcat
pkcs12 -export -in mycrt.crt -inkey private.key -out .keystore -name tomcat
7. tomcat이 설치된 경로(ex: C:/tomcat/tomcat8/...)로 가서 tomcat/config 에서 server.xml 다음 내용 추가
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThread="150" scheme="https" secure="true"
keystoreFile="키파일 위치" keystorePass="개인키 비밀번호"
clientAuth="false" sslProtocol="TLS" URIEncoding="utf-8" />
8. WEB-INF/web.xml 다음 내용 추가 (http로 들어왔을 때 https로 리다이렉션)
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL Forward</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
9. 이클립스나 STS에서 서버 포트를 확인한다.
SSL이 추가되지 않았다면 툴을 재시작해보거나 그래도 안 되면 서버를 다시 등록해준다.
10. 결과
나의 경우 context path를 '/' 로 지정한 뒤 http://localhost:8084 로 접속했는데, http는 모두 https로 리다이렉션 해줬으므로 https://localhost:8443으로 이동되었다. 정식 인증을 받지 않고 https를 사용했기 때문에 '주의 요함'이 표시된다. 돈 주고 도메인을 사서 정식으로 등록하면 제대로 사용할 수 있다.
11. 톰캣의 server.xml 전문
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener
className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener
className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on" />
<Listener
className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener
className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThread="150" scheme="https" secure="true"
keystoreFile="키파일 경로" keystorePass="개인키 비밀번호" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
clientAuth="false" sslProtocol="TLS" URIEncoding="utf-8" />
<Connector port="8009" protocol="AJP/1.3"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true"
autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
'Server > WAS' 카테고리의 다른 글
Tomcat8.5 + SpringBoot CORS 문제 해결 (1) | 2021.09.10 |
---|