Systems/Unix / Linux2012.05.24 17:23

SSL handshake failed: SSL error: Key usage violation in certificate has been detected


프로젝트 관리를 위한 서버에 VisualSVN 최신버전을 설치하고 Centos에서 svn co (checkout)을 돌렸더니 이런 오류가 발생한다. 자격증명서(certificate)에서 Key 사용에 관한 오류가 발생하여서 SSL 핸드셰이크(handshake)를 할 수 없다는 것. 


인터넷을 뒤져 이 문제가 libneon과 GnuTLS 등등에 있다는 것 까지는 알아냈는데, Centos에는 관련된 라이브러리가 설치되어 있지 않은 것처럼 보이는데도 문제가 생겨서 해결이 난감.


그래서 또다른 우회책을 찾았으니...


일단 VisualSVN 서버가 깔린 기계에서 regedit을 돌린다. 그리고 다음의 필드 추가.




즉, CreateGnuTLSCompatibleCertificate를 DWORD 타입으로 추가해서, 그 값을 1로 설정하는 것.


이렇게 한 다음에 이제 VisualSVN 서버에서 개인 자격 증명을 추가하면 되는데... 절차는 이렇다. 우선 VisualSVN 서버 관리자 화면의 왼쪽 Pane에서 최상위 노드를 클릭한 다음, 마우스 오른쪽 버튼을 누르고 Properties를 선택한다. 




그런 다음에 뜨는 창에서 Certificate를 선택하고, Change certificate를 누른다. 그리고 개인 자격 증명을 생성한다. 




이렇게 하고 Centos 쪽에서 Checkout을 실행해 보면, 다음과 같은 화면이 뜬다. 



지운 부분은 보시면 안되는 부분이니까 궁금해하지 마시고.. (수줍) 


아무튼 P를 선택하고 영구 승인을 한 다음에, 그냥 쓰면 된다. 개인 인증서라는게 껄쩍지근한 분들은 다른 해결책을 인터넷에서 찾아보시기 바라고.. ㅋㅋ


64비트 윈도우즈에서는 Registry 편집을 좀 달리해 주어야 할 수 있는데, 거기에 관해서는 아래의 링크를 참고하시기 바란다. 


http://www.visualsvn.com/support/topic/00056/



저작자 표시 비영리 변경 금지
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

  1. 잘보고갑니다^^ 몰랐던 정보네요~

    2012.05.25 21:56 신고 [ ADDR : EDIT/ DEL : REPLY ]

Languages/Java2008.07.16 16:46

SVN에 등록된 Maven 프로젝트를 checkout 받아서 빌드하는 과정은 아주 단순하다.

우선 다음과 같이 프로젝트를 checkout 한다.

svn co http://..../svn/pe/testapp testapp

이전 글과 마찬가지로, 붉은색으로 표시된 부분은 자신의 환경에 맞추어 바꾸면 된다.

co는 checkout의 약자이고, 그 뒤에 나오는것은 project의 URL이며, (이를 위해서 Apache에 SVN 서버가 통합되어 있어야 한다. 그 통합 방법은 이전 글에서 다룬 바 있다.) testapp는 checkout 받은 소스가 들어갈 디렉터리 이름이다.

이렇게 하면 testapp 디렉터리 안에 소스코드들이 쫙 깔린다.

이 디렉터리로 가서

mvn compile

위와 같이 하면 코드가 컴파일된다. 다음은 실행 결과이다.

bjlee@bjlee-ubuntu804:~/work/maven/testapp$ mvn compile
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building testapp
[INFO]    task-segment: [compile]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Wed Jul 16 16:44:00 KST 2008
[INFO] Final Memory: 2M/6M
[INFO] ------------------------------------------------------------------------

테스트를 실행하는 방법은 다음과 같다.

mvn test

위와 같이 하면 테스트가 실행된다. 다음은 실행 결과이다.

bjlee@bjlee-ubuntu804:~/work/maven/testapp$ mvn test
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building testapp
[INFO]    task-segment: [test]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test]
[INFO] Surefire report directory: /home/bjlee/work/maven/testapp/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running re.etri.moncp.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Wed Jul 16 16:44:51 KST 2008
[INFO] Final Memory: 4M/8M
[INFO] ------------------------------------------------------------------------


이제 테스트 결과 fail된 테스트가 발견되었을 시, 그에 대한 issue를 Trac에 자동 등록하도록 하는 부분을 구성해야 한다. 그 부분이 가장 어렵다.

<self-question>
지금 생각으로서는 Maven 플러그인을 구현하면 좋을것 같기도 한데, 그 방법이 워낙 까다로와서 엄두가 나질 않는다. 하지만 시도해 볼 만한 가치는 있을 듯... (아니면 google 검색을 잘 하면 나올지도 *쿨럭*)
</self-question>

신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

Languages/Java2008.07.16 12:44

SVN 서버 준비 (with apache2)

sudo apt-get install libapache2-svn
위의 절차는 /usr/lib/apache2/modules/ 디렉터리에 mod_svn_dav.so(?) 파일을 깔기 위한 것.

그 다음에 /etc/apache2/conf.d/svn 파일 생성 후 다음과 같이 입력. 붉은 색으로 표시된 부분은 각자 입맛에 따라 바꾸면 됨.

<Location /svn/pe>
    DAV svn
    SVNPath /home/bjlee/work/svn/pe
        AuthType Basic
        AuthName "PE svn repository"
        AuthUserFile /home/bjlee/work/trac/pe/trac.htpasswd
        Require valid-user
</Location>

필자는 Trac 패스워드를 재사용하였다. 'developer'같은 멍청한 이름의 사용자를 두지 않는 한 괜찮을 듯. 어차피 Trac 시스템을 사용하는 사람들이 Eclipse를 써서 소스를 고치고 등록할테니.

그런 다음 /home/bjlee/work/svn/pe 디렉터리의 권한을 다음과 같이 수정.

addgroup bjlee www-data
sudo chown -R bjlee:www-data pe
sudo chmod -R g+w pe/
sudo chmod 444 pe/format pe/db/format

여기까지 한 다음 sudo apache2ctl restart 한다.
간혹 /etc/apache2/conf.d/svn 파일에 문제가 있다는 오류 메시지가 뜨기도 할텐데, 대부분 LoadModule를 추가하지 않아서 생기는 문제일 것. http://www.pyrasis.com/main/Subversion-HOWTO#s-4.2 이 문서를 참고해서 /etc/apache2/conf.d/svn 맨 윗줄에 추가해주면 된다. 필자는 안넣어도 되길래 그냥 넣지 않았다.

Subversion, m2clipse 플러그인 설치 (+with Eclipse)

Subversion plugin을 Eclipse에 설치하면 SVN 서버와 연동할 수 있다. 물론 SVN 서버는 상기 절차를 거쳐 apache2 서버를 통해 외부와 연동할 준비가 되어 있어야 한다.

ubversion 설치를 위해서는 update 사이트에 http://subclipse.tigris.org/update_1.4.x 를 추가. 그런 다음 m2clipse plugin 설치를 위한  http://m2eclipse.sonatype.org/update/ 사이트를 역시 update 사이트에 추가.

그런데 설치하려고 하다보면 equinox라는 플러그인에 대한 의존성을 해결할 수 없다고 불평할 때가 있음. 그런 경우에는 관련 플러그인들을 찾아서 설치하거나 Maven Integration for AJDT를 선택하지 않으면 문제를 해결할 수 있음.

Eclise에서 Maven 프로젝트를 생성하고 SVN 저장소에 등록해보자

프로젝트 생성 과정은 다음과 같다.
File->New->Maven Project
첫 번째 창에서 use default workspace location을 선택하고, 
두 번째 창에서 maven-archetype-quickstart를 선택한다. (Nexus Indexer가 선택된 상태라야 가능)
세 번째 창에서 필요한 값들을 입력하고 finish를 누르면 프로젝트가 생성된다.

프로젝트를 SVN 서버에 올리는 과정은 다음과 같다.
프로젝트 생성 후 프로젝트 이름 위에서 마우스 오른쪽 버튼 클릭 -> team -> share 선택하면
첫 번째 창에서 SVN 선택,
두 번째 창에서 리파지토리 위치 선택 (http://xxxx.../svn/pe)
그러고 나면 아이디랑 패스워드를 물어볼텐데, 그때는 적절히 아이디랑 패스워드를 입력해 주면 됨. (그에 대해서는 맨 위의 "SVN 서버 준비"의 관련 부분 참고.

맺으며

여기까지 하면 Eclipse를 통해 Maven 프로젝트를 생성하고, 중앙 저장소에 등록하는 준비가 끝난 셈이다. 이전 글에서 설명했던 MyLyn + Trac 연동만 제대로 되면, "이슈 추적 + 코드 공유"라는 큰 그림을 Eclipse를 통해 그리는 준비작업은 대략 끝난 셈이다.

이제 필요한 것은 SVN 저장소에 저장된 공유 코드들을 매일 빌드하고, 그 결과를 새로운 이슈로 만들어 Trac에 등록하는 작업을 어떻게 처리하느냐다.

그 부분은 다음 글에서 다루도록 하겠다.

신고
Posted by 이병준

소중한 의견, 감사합니다. ^^