자바 security에 인증서 적용방법 for java


Intro

다른 고객사와 서버단에서 HTTPS 통신을 하게 되었는데 인증서 오류가 발생하여 우회 로직을 써보고 웹로직에 인증서를 적용 해보았지만 소용이 없없습니다.
결국 java 환경에서 수행중인 java의 인증서 영역에 저장을 하면서 해결이 되었고 이를 기록으로 남기게 되었습니다.
고객사 팀장이고 직원들이 병풍을 치는 바람에 식겁한 경험이었습니다. (휴..)

인증서란?

SSL(Secure Socket Layer) 프로토콜은 처음에 Netscape사에서 웹서버와 브라우저 사이의 보안을 위해 만들었다.
SSL은 Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다.
아래는 SSL이 어떻게 작동하는지에 대한 간단한 과정을 설명한 것이다.
[웹브라우저] SSL로 암호화된 페이지를 요청하게 된다. (일반적으로 https://가 사용된다)
[웹서버] Public Key를 인증서와 함께 전송한다.
[웹브라우저] 인증서가 자신이 신용있다고 판단한 CA(일반적으로 trusted root CA라고 불림)로부터 서명된 것인지 확인한다.
(역주:Internet Explorer나 Netscape와 같은 웹브라우저에는 이미 Verisign, Thawte와 같은 널리 알려진 root CA의 인증서가 설치되어 있다)
또한 날짜가 유효한지, 그리고 인증서가 접속하려는 사이트와 관련되어 있는지 확인한다.
[웹브라우저] Public Key를 사용해서 랜덤 대칭 암호화키(Random symmetric encryption key)를 비릇한 URL, http 데이터들을 암호화해서 전송한다.
[웹서버] Private Key를 이용해서 랜덤 대칭 암호화키와 URL, http 데이터를 복호화한다.
[웹서버] 요청받은 URL에 대한 응답을 웹브라우저로부터 받은 랜덤 대칭 암호화키를 이용하여 암호화해서 브라우저로 전송한다.
[웹브라우저] 대칭 키를 이용해서 http 데이터와 html문서를 복호화하고, 화면에 정보를 뿌려준다.

내 PC에 인증서 다운받기

  1. 추가하고자 하는 사이트 접속 후 [안전함] 마우스 우 클릭 후 [인증서] 선택 합니다. (크롬 기준)

  2. 인증서 [자세히] 탭 선택 후 파일에 복사 선택 합니다.

  3. 아래 내용을 참고하여 인증서를 다운받습니다.







    (인증서 파일)

  4. 아래 내용을 참고하여 java security에 인증서를 등록합니다. (폴더위치는 다를 수 있음)

# 다운받은 인증서 파일을  FTP클라이언트(ex:Filezila) 이용하여 서버에 업로드 합니다. (폴더위치는 자유럽게)
/home/ssl

# root 접속  java CA저장소 폴더로 이동 (java 위치는 다를  있음)
$ su -
$ cd /usr/java7_64/jre/lib/security

# cacerts 백업
$ cp cacerts cacerts.해당날짜

# 백업파일의 owner를 원래대로 설정 (기존파일 owner 참고)
$ chown bin:bin cacerts.해당날짜

# cacerts파일을 서비스계정으로 인증서를 추가하기 위해 파일 권한 설정
$ chmod 777 cacerts

# 서비스계정으로 기존 인증서 삭제 
# -delete : 인증서 삭제
# -alias :  인증서 별칭
# -keystore : 인증서 위치
# -storepass : 인증서 암호 (초기패스워드 : changeit)
$ usr/java7_64/bin/keytool -delete -alias google -keystore /usr/java7_64/jre/lib/security/cacerts -storepass changeit

# 서비스계정으로 신규 인증서 등록
# -importcert : 인증서 등록
# -keystore : 인증서 위치
# - trustcacerts : ???
# - alias : 인증서명 별칭
# - file : 신규 인증서 위치
$ /usr/java7_64/bin/keytool -importcert -keystore /usr/java7_64/jre/lib/security/cacerts -trustcacerts -alias xurrency -file "/home/ssl/google.cer"
 스토어 비밀번호 입력 : changeit
 인증서를 신뢰합니까? y (prompt에서 y로 설정)
인증서가  스토어에 추가되었습니다.

# 인증서 등록 확인
/usr/java7_64/bin/keytool -list -keystore cacerts
/usr/java7_64/bin/keytool -list -v -keystore cacerts > ./list.txt

# root 접속  cacerts 파일의 접근권한을 원래대로 변경
$ cd /usr/java7_64/jre/lib/security
$ chmod 555 cacerts
$ exit



인증서 확인에 편리한 keystore 툴

  • Window에서 keystore 툴을 이용하면 좀더 편하게 cacerts 파일에서 인증서 목록을 확인 할 수 있습니다. (다음에 정리 하겠습니다.)

태그:

카테고리:

업데이트:

댓글남기기