홈페이지를 운영하면서 GPIN을 적용할 일이 있지만 가이드가 있어서 그런지 GPIN에 관한 정보는 검색해도 별로 없는 것 같아서
한번 정리해 보려고 한다.
우선 GPIN은 한국지역정보개발원에서 제공하는 인증 시스템인데 구버전과 최근의 버전이 조금 차이가 있는것 같다.
(이것은 적용되어 있던 GPIN소스와 신규로 받은 GPIN소스의 비교결과 내린 결론인데 개발사에서도 신규 모듈이라고 했으니 맞는것 같다. )
우선 가이드가 있지만 사실 뭔가 좀 부족해 보이는게 사실이라서 지원받고 응답받았던 내용들을 조금 정리해 보겠다.
받은 모듈 압축을 해지하면 아래와 같은 폴더로 되어있는데
첫번째가 신규 클라이언트 모듈이고
두번째는 클라이언트 서버로 사용할 수 있도록 제공하는 톰캣이다.
세번째는 인증서 변환 프로그램인데 (이부분은 인증서가 필요하므로 주무관님께 부탁하면 되겠다. 직접해도 어렵진 않지만 인증서라서..)
네번째가 가이드인데 여러가지 오류사항에 대해서 설명되어 있지만 막상 크게 잘 정리되어 있지는 않아서 오히려 왔다갔다하다가 길을 읽을 수도 있다. (그래도 기본적인 개념이나 오류 사항들은 자세하게 적혀있으니 참고하면 좋다.)
다섯번째는 자바 보안 패치라고 한다(난 안써봤다. )
여섯번째는 중복가입확인 코드 일괄생성 모듈이다.
여기서 필수로 사용하는 것은 첫번째, 두번째, 세번째를 사용한다.
사전작업이 잘 진행됐다고 하고(서버 인증서 변환과 반환 사이트 url등록등) : 이런 사항들이 가이드에 자세하게 나와있다. 참고해서 작업하면 무리없이 진행 할 수 있다.
중요한 것은 다음부터 인데
모듈안에 들어가면 이렇게 구조가 잡혀있는데 중요한 것은 이 구조를 유지 한 상태에서 작업 해야 된다는 것이다.
기존에는 그 구조를 properties 파일과 makeAutoMeta.sh파일에 정의해서 사용하면 됐는데 이전 버전 처럼 했다가는 오류를 만나서
처음부터 다시 구조를 잡아야하는 불상사를 겪을 수 있다.
톰캣경로에 webapps/ 밑에 해당 폴더를 배포하고 gpin.properties 파일과 makeAutoMeta.sh파일을 환경에 맞게 수정하고 makeAutoMeta.sh파일을 실행하면 meta파일과 keystore에 자동으로 키파일을 배포해준다.
우선 순서대로 설명해 보자면 첫번째 G-PIN폴더에는 예제 jsp 파일들과 WEB-INF 파일이 있는데 이부분은 우선 손대지 말고 나중에 수정 사항을 설명하겠다.
두번째로 keystore폴더를 보면 이전에 인증서 생성프로그램으로 생성한 키파일들을 넣어주면 된다.
세번째로 lib폴더에는 필요한 라이브러리들이 포함되어있는데
gpin-sp-1.4.0.3.jar파일은 jdk 1.4버전을 사용할때 사용하라고 권고 되고 있는데 그래서 추가로 넣어 줘야 하는 파일들이 있다.
(없으면 proxy 생성을 하지 못한다는 오류 발생)
위와 같이 gpin-proxy-1.5.jar, gpin-sp-1.5.jar파일을 추가해서 에러를 해결했다. (에러메시지는 생각이 나질 않는다. 해당소스의 기능자체가 되지 않았던듯하다.)
그리고 중요한것이 gpin.properties 파일을 작성하는 것인데 해당 사이트에 맞도록 SPID와 pfx파일 이름과 jks파일 이름을 정해서 작성해 주면 된다.
또다른 중요한 포인트가 makeAutoMeta.sh(리눅스, 윈도우는 bat)파일 작성인데
물론 간단하게 얘기하면
JAVA_HOME 경로 잡아주고(java jdk위치)
JRE_HOME 경로 잡아주고(java jdk밑의 jre위치)
GPIN_HOME경로도 잡아준다음 (현재 파일의 위치로)
그리고 쭈욱 관련 설치 관련 사항들 내려다가 보면은
CLASSPATH 잡아주는 곳이 있는데 이때 GPIN_HOME을 중심으로 상대경로로 작성해서 lib 파일들을 등록해 주면 되겠다.
그리고 PROP_CONTEXT까지 등록해 주면 되겠다.
#!/bin/sh # --------------------------------------------------------------------------- # Metadata Installation script for the GPIN_SP metadata # # $Id: makeAutoMeta.sh 2008-01-28 # --------------------------------------------------------------------------- # jdk 1.5를 지역적으로 사용하시고자 할 경우 아래 선언된 환경변수에 jdk와 jre의 경로를 수동으로 넣어주십시오. # export JAVA_HOME="java1.5경로(사용 시 주석을 해제하십시오)" # export JRE_HOME="jre 경로(사용시 주석을 해제하십시오)" JAVA_HOME=/usr/java/jdk1.6.0_45 JRE_HOME=/usr/java/jdk1.6.0_45/jre export JAVA_HOME export JRE_HOME # First clear out the GPIN_HOME GPIN_HOME=/jeus6/GPIN_Tomcat/webapps/ # First clear out the user classpath CLASSPATH= ########################### # JAVA 환경변수 체크 ########################### # Make sure prerequisite environment variables are set if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then # Bugzilla 37284 if $darwin && [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home" ]; then export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home" else echo "Neither the JAVA_HOME nor the JRE_HOME environment variable is defined" echo "At least one of these environment variable is needed to run this program" exit 1 fi fi if [ -z "$JAVA_HOME" -a "$1" = "debug" ]; then echo "JAVA_HOME should point to a JDK in order to run in debug mode." exit 1 fi if [ -z "$JRE_HOME" ]; then JRE_HOME="$JAVA_HOME" fi # If we're running under jdb, we need a full jdk. if [ "$1" = "debug" -o "$1" = "javac" ] ; then if [ "$os400" = "true" ]; then if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/javac ]; then echo "The JAVA_HOME environment variable is not defined correctly" echo "This environment variable is needed to run this program" echo "NB: JAVA_HOME should point to a JDK not a JRE" exit 1 fi else if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/jdb -o ! -x "$JAVA_HOME"/bin/javac ]; then echo "The JAVA_HOME environment variable is not defined correctly" echo "This environment variable is needed to run this program" echo "NB: JAVA_HOME should point to a JDK not a JRE" exit 1 fi fi fi echo "JAVA_HOME : $JAVA_HOME" ################################ # 메타 파일 자동 생성용 함수 선언 ################################ goStart() { ############################ echo "START Creating keystore..." ############################ export CLASSPATH=$CLASSPATH:$GPIN_HOME/lib/commons-lang.jar export CLASSPATH=$CLASSPATH:$GPIN_HOME/lib/commons-collections-3.2.jar export CLASSPATH=$CLASSPATH:$GPIN_HOME/lib/log4j-1.2.5.jar export CLASSPATH=$CLASSPATH:$GPIN_HOME/lib/velocity-1.5.jar export CLASSPATH=$CLASSPATH:$GPIN_HOME/lib/bcprov-jdk14-138.jar export CLASSPATH=$CLASSPATH:$GPIN_HOME/lib/xml-security-1.4.0.3.jar #주의: jdk가 1.4일 경우 saml-1.4.jar을 사용합니다. export CLASSPATH=$CLASSPATH:$GPIN_HOME/lib/gpin-sp-1.5.jar #주의: jdk가 1.4일 경우 gpin-sp-1.4.jar을 사용합니다. export CLASSPATH=$CLASSPATH:$GPIN_HOME/lib/gpin-proxy-1.5.jar export CLASSPATH echo $CLASSPATH PROP_CONTEXT=$GPIN_HOME/gpin.properties export PROP_CONTEXT #java -classpath $CLASSPATH gov.mogaha.gpin.sp.util.metadata.MetadataGenerateMain $PROP_CONTEXT $JAVA_HOME/bin/java -classpath $CLASSPATH gov.mogaha.gpin.sp.util.metadata.MetadataGenerateMain $PROP_CONTEXT } choiceRun() { echo "정말로 실행하시겠습니까? (y/n) :" read choice case $choice in 'y') goStart ;; 'n') exit 2 ;; *) echo "$choice 는 올바른 값이 아닙니다." choiceRun esac } ################################ #환경변수 체크 완료 후 메타 파일 자동 생성 스크립트 ################################ if [ -z "$GPIN_HOME" ]; then export GPIN_HOME=$PWD fi if [ -z "$GPIN_HOME/gpin.properties" ]; then echo The GPIN_HOME environment variable is not defined correctly echo This environment variable is needed to run this program exit 1 fi if [ -z "$GPIN_HOME/G-PIN/WEB-INF/gpin-config.xml" ]; then echo "본 스크립트를 실행하면 메타데이타 정보가 초기화 됩니다 !!" choiceRun else goStart fi ########################### echo "End Creating keystore..." #########################
전부 작성하면 위와 같이 되는데 이것은 내 서버에서 사용할때의 경로이므로 참고만 하는 것으로 하자(각자 서버에 맞게 설정)
이렇게 설정을 맞췄으면 해당 경로로 이동해서 makeAutoMeta.sh 파일을 실행할 수 있겠다. 하지만 이렇게 실행했을때
/bin/sh^M: bad interpreter: No such file or directory 이런 오류가 나올수 있는데 관련 해결 방법은 밑의 출처로 가보면 되겠다.
출처: http://guitarhero03.tistory.com/entry/리눅스binshM-bad-interpreter-No-such-file-or-directory?category=532764
그리고 실행해보면 G-PIN/WEB-INF/ 밑의 폴더에 있는 keystore폴더에 jks파일과 metadata 폴더에 SPID-metadata.xml이라는 파일이 생성되 어 있을것이다. 그러면 정상적으로 작동을 한것이다.
이정도면 1단계가 끝났다고 볼 수 있다.
다음 단계는 다음 포스트에서 작성하겠다.
'프로그래밍 > 서버' 카테고리의 다른 글
[리눅스]폴더 압축/해제 방법 (0) | 2017.12.14 |
---|---|
[GPIN]GPIN 적용하기_2 (2) | 2017.12.01 |
[리눅스]/bin/sh^M: bad interpreter: No such file or directory (0) | 2017.11.08 |
[JEUS]jsp 반영안될때 (0) | 2017.11.07 |
[JEUS]버전별 jsp 컴파일 경로 (0) | 2017.11.03 |