본문 바로가기
IT만들기/Java

GPKI 모듈 설치

by 커피향처럼 2011. 10. 10.

로컬 개발환경에서 GPKI 테스트를 하기 위해 작성한 글입니다.

로컬 개발 설정시 표준 API 설치 가이드 되로 하면 처음부터 에러 발생시는 다음의 절차가 누락되었기 때문입니다.

WINDOWS의 경우입니다.
* 다음 두 파일을 OS에 따라 다음 위치에 복사합니다.

"gpkiapi.dll, nsldap32v11.dll" 파일 두개를 윈도우의 버전에 따라 다음 위치에 복사합니다.

"Windows 32bit" 일 경우입니다.
C:\Windows\System32

"Windows 64bit" 일 경우입니다.
C:\Windows\SysWOW64


* gpkisecureweb 디렉토리를 개발환경 디렉토리로 복사합니다.
  C:\egovframeworkProject\gpkisecureweb
  
테스트 페이지로 접속시 오류가 발생할 것입니다.
오류 내용에 "dsjdf.properties 파일이 없다"는 메세지가 뜹니다. 오류 내용을 자세히 보면 어떤 디렉토리에서 파일이 없는지 표시됩니다.
메세지에 표시된 디렉토리로 dsjdf.properties 파일을 복사합니다.

참고 : 임시 라이센스(gpkiapi.lic)는 만료기간이 2달임으로 기간 초과시 2달마다 재발급받아야 합니다.
         설치가이드에 보면 JEUS WAS에서 세팅 부분에 dsjdf.properties 파일 경로 설정 하는 부분을
         "-Dcom.dsjdf.jdf.config.file"로 하라고 되어있으나 "-Dcom.dsjdf.config.file" 로 설정해야 합니다.

02.표준API_설치가이드(ver1.1).pdf

gpki JSP 예제

<%@ include file="/gpkisecureweb/gpkisecureweb.jsp" %>
<% String challenge = gpkiresponse.getChallenge(); %>
....
<script language='javascript' src='<c:url value='/gpkisecureweb/var.js'/>'></script>
<script language='javascript' src='<c:url value='/gpkisecureweb/GPKIFunc.js'/>'></script>
<script language='javascript' src='<c:url value='/gpkisecureweb/object.js'/>'></script>
<script type="text/javascript">
//ActiveX 설치 여부
function check_ActiveX(pid)
{
    try {
        var tmp;
        tmp = new ActiveXObject(pid);
        return true;
    } catch (e) {
        return false;
    }
}

//GPKI 로그인
function gpkiLogin(obj){
 try{
  if( !check_ActiveX("GPKIInstaller.GPKIInstallerX.1") ){
   if(confirm("GPKI 인증 프로그램이 설치 되어있지 않습니다.\nGPKI 인증 프로그램을 설치 후에 웹브라우저를 다시 실행하여 주십시오.\n설치 파일을 다운로드 하여 설치하시겠습니까?")){
    document.location.href="<c:url value='/gpkisecureweb/setup/install_off_v1.0.4.9.exe'/>";
   }
  } else {
   Login(obj); 
  }
 }catch(e){
  alert(e.message);
 }
}
</script>
...
<form name="GpkiLoginForm" method="post" action="<c:url value='/gpkiLogin.do'/>">
 <p class="gpki">
<a href="#LINK" onClick="gpkiLogin(document.GpkiLoginForm);">
<img alt="GPKI 로그인 (공무원인증서)" src="../images/etc/gpki_btn01.gif" /></a></p>
 <input type="hidden" name="challenge" value=<%=challenge%>>
 </form>
...

gpki 인증 처리 시 참고 코드
X509Certificate cert = null; 
GPKIHttpServletRequest gpkirequest = new GPKIHttpServletRequest(request);

//파라미터는 gpkirequest로 받아오면 됩니다.
String id = gpkirequest.getParameter("userId");
String pass = gpkirequest.getParameter("password");

cert = gpkirequest.getSignerCert();     
String dn = cert.getSubjectDN(); //주체값
String uid = cert.getSubjectUID(); //GPKI주체명



GPKI 모듈은 jar로 되어 있기 때문에 java의 특성상 OS 특성을 타지 않을 것이라고 생각 하기 쉬우나 jar안에(직접 압축해제서 하나씩 보지는 않았음) C 라이브러리 등이 포함되어 있는 것으로 알고 있습니다. 
운영하는 서버의 OS 버전을 각각 받아야 합니다.
간혹 개발서버에서는 테스트가 잘 되었는데 운영서버에 배포했더니 되지 않는다는 경우가 있습니다. 이 경우 서버가 다른지 확인해야 합니다.
개발서버는 윈도우인데 운영서버는 IBM-AIX 유닉스라고 한다면 IBM-AIX임을 알리고 유닉스용 모듈을 받아야 합니다.

댓글