이전 글에서 인증 서버를 로컬에서 실행 시켜봤다.

로그인 화면은 확인 했지만 계정이 존재하지 않기 때문에 로그인이 되지는 않았다.

그리고 HTTPS 로 연결해야 SSO를 제대로 사용할 수 있다고 했다.

 

아래 이미지는 이전 글에서 봤던 로그인 페이지이다.

현재는 로그인이 불가능하며, 노란색 박스를 보면 HTTPS 관련 경고 문구가 있다.

이번 글에서는

  • 로컬 SSL 키 저장소를 생성해서 HTTPS로 인증 서버를 구현해보자.

위 내용에 대해서 작성하겠다.

 

먼저 로그인 화면에서 보여지는 HTTPS 관련 에러 문구를 지워보도록 하자.

 

첫번째!!!!

우선 터미널을 실행시키고 cas-server/src/main/resources/etc/cas 디렉토리로 이동하자.

그리고 다음 명령어를 실행하자.

keytool -genkey -keyalg RSA -alias thekeystore -keystore thekeystore -storepass changeit -validity 360 -keysize 2048

그리고 아래와 같이 입력한다.

** 입력 시 주의사항 **

이름과 성, 조직 이름단위에 대한 정보를 입력할 때에는 인증 서버의 domain을 입력하는 것이 다.

localhost로 테스트 할 것이라면 localhost를 사용해야 한다.

만약 cas.server.com 으로 테스트 하려면 cas.server.com 을 입력하고 hosts 파일(윈도우즈 기준) 을 수정해서 사용하면 된다.

이 작업을 수행하지 않으면 SSL 핸드 쉐이크 중에 오류가 발생할 수 있다!!

 

위 내용을 요약하면 현재 디렉토리에 이름thekeystore 이고,  Passwordchangeit 인 키 저장소를 생성한다.

 

두번째!!!!

다음 단계는 생성 된 저장소를 클라이언트 응용 프로그램에서 사용할 수 있도록 .crt 형식으로 export 하는 것이다.

동일한 디렉토리에서 다음 명령을 실행하여 생성 된 thekeystore 파일을 keystore.crt 로 export 하자.

암호는 동일하게 하자.

keytool -export -alias thekeystore -file thekeystore.crt -keystore thekeystore

디렉토리에 thekeystore.crt 파일이 생성된 것을 확인할 수 있다.

 

이제 export 된 thekeystore.crt를 Java cacerts 키 저장소로 import 하자.

 

아래와 같이 입력하자.

keytool -import -alias thekeystore -storepass changeit -file thekeystore.crt -keystore "C:\Program Files\Java\jdk1.8.0_151\jre\lib\security\cacerts"

 

이 때, Java cacerts 키 저장소의 위치는 클라이언트 Application에서 사용되는 JRE와 동일해야 한다.

 

확인을 해보자.

빨간색 박스로 표시한 파일은 인증서를 import 하기 전 원본 cacerts 파일이다.

파란색 박스로 표시한 파일은 인증서를 import 한 복사본 cacerts 파일이다.

 

몇번 더 추가해보면 알겠지만 파일 크기가 증가한다. 인증서가 추가되는 것이다.

다시 말하면 원본 cacerts 파일을 복사하지 않고 새 파일로 추가하게 되면 해당 JRE를 사용하는 다른 Application이 SSL 핸드쉐이크를 할 때 문제가 생길 수 있다는 말이다.

 

프로젝트를 thekeystore 키 저장소가 있다.

 

그리고 application.properties 에 key 정보를 입력하자.

 

그리고 다시 실행해보자.

 

https://localhost:8443/cas/login

 

이전 글에서 봤던 로그인 화면이랑 조금 달라졌다.

HTTPS 관련 경고 문구가 사라졌다. 그리고 URL을 확인하면 HTTPS 가 적용된 것을 확인할 수 있다.

 

 

추가로..

 

로컬에 설치 되어 있는 Tomcat을 사용할 경우 다음과 같이 적용하면 된다.

 

먼저 설치된 Tomcat 디렉토리 위치에서 conf 디렉토리로 이동한다.

그곳에 위치한 server.xml 파일을 다음과 같이 수정한다.

 

keystoreFile : 이 곳은 생성한 keystore의 위치를 입력하자.

keystorePass : keystore 생성 시 입력했던 암호를 입력하자.

 

그리고 나서 다음과 같이 주석을 하자.

그리고 실행 설정을 추가하자.

**주의 사항**

Windows에서는 application.properties 파일의 server.context-path 설정이 적용되지 않았다.

때문에 Tomcat 설정의 DEPLOYMENT 탭에서 Application context를 /cas로 설정해도, 'https://localhost:8443/cas/login'으로 접근이 가능했다.

하지만 MacOS에서는 두개 모두 적용이 되어서 'https://localhost:8443/cas/cas/login' 으로만 접근이 가능했다.

 

 

다음 글에서는 계정을 추가하는 방법에 대해서 쓰겠다.

+ Recent posts