로컬 개발환경에서 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임을 알리고 유닉스용 모듈을 받아야 합니다.
'IT만들기 > Java' 카테고리의 다른 글
자바는 무엇이며 왜 필요합니까? (0) | 2018.10.12 |
---|---|
[Java Exception] 자바 에러 목록 및 ERROR 처리 (0) | 2017.11.08 |
jsp 에러페이지 만들기 (0) | 2017.07.10 |
한글 길이 자바스크립트 UTF-8 byte 길이 구하기 (0) | 2017.06.25 |
jsp 반영 안될 때 (0) | 2017.06.17 |
자바 제네릭스 (0) | 2017.06.17 |
JEUS에서 지원하는 Specification (0) | 2017.06.10 |
Java try/catch/throw (0) | 2009.01.07 |
댓글