'openssl'에 해당되는 글 2건

  1. 2011.03.09 iRDesktop 빌드 방법
  2. 2011.03.04 OpenSSL 에 대한 이해
작업물2011. 3. 9. 10:25


iRDesktop 은 RDP 를 이용해 윈도우의 터미널 서비스를 이용할 수 있게 해주는 iPhone 앱이다.

GNU GPL 에 의거 오픈소스 프리웨어 이며 소스를 다운로드 받아 빌드하기 위해선 OpenSSL 이 필요하다.

단순히 소스를 받아 컴파일을 시도하면 OpenSSL 라이브러리를 찾을 수 없다는 에러가 나는데 래와 같은 방법으로 정상적으로 빌드 할 수 있다.

이 내용은 네이버 카페 ‘맥부기 애플(iOS,Mac) 개발자모임’ 의 쑤근쑤근(juncon) 님의 게시글 (원문 : 오픈소스 RDP iRdesktop 빌드하기) 를 참고하여 작성한 것이다.


  • 준비물

당연히 맥, Xcode.

iRDesktop 의 소스 (이 문서에서는 현재 가장 최신 버전인 1.0.5 를 사용한다)

 

  • OpenSSL 빌드 하기

iRDesktop 소스를 다운받아 압축을 적당한 곳에 해제하면 소스 폴더 내 ‘OpenSSL-DownloadAndBuild.command’ 와 ‘OpenSSL-Thinstuff.diff’ 파일이 있는것을 확인할 수 있다.

OpenSSL-DownloadAndBuild.command 파일은 OpenSSL 라이브러리 소스코드를 다운로드하여 언패킹하고 이를 OpenSSL-Thinstuff.diff 파일을 이용해 코드 패치한 다음 빌드하는 배치파일이다.

해당 파일을 파인더에서 더블클릭하여 실행하면 /Users/사용자이름/ 경로에 파일이 다운받아지고 진행되기 때문에 터미널에서 타이핑하여 실행해야 한다.

터미널을 열고 iRDesktop 소스가 다운받아진 경로로 이동한 뒤 아래와 같이 입력한다.


irdesktop-src-1.0.5 cloim$ ./OpenSSL-DownloadAndBuild.command


소스 다운 – 언패킹 - 패치하는 과정이 지나고 빌드를 시작하는데 i386 버전 (시뮬레이터 용) 은 정상적으로 빌드되지만 armv6 버전 (iPhone 용) 은 libcrypto.a 와 libssl.a 를 찾을 수 없다는 메세지를 표시하며 제대로 빌드되지 않은것을 확인할 수 있다 (iPhone SDK 4.1 이 설치되어있다면 나타나지 않는다).

이를 해결하려면 먼저 어떤 버전의 SDK 가 설치되어있는지 확인해야 하는데 이는 Xcode 를 실행하여 메뉴의 About Xcode – More Info, 시스템 정보 보기 – 소프트웨어 – Developer 에서 iPhone OS 부분을 확인하면 알 수 있다. 현재 나의 SDK 버전은 4.2 이다.

이제 OpenSSL-Thinstuff.diff 파일을 적당한 편집기로 연 다음 ‘4.1’ 로 찾기를 해서 해당 부분을 자신의 버전에 맞게 수정하고 저장한 다음 다시 command 파일을 터미널에서 실행하면 이제 정상적으로 모두 컴파일 되는것을 확인할 수 있다.

 

  • iRDesktop 빌드 하기

이제 Xcode 에서 iRDesktop 의 프로젝트 파일을 열고 Base SDK 를 자신의 SDK 버전으로 변경한 뒤 Build And Run 을 해보자.


/Users/cloim/Documents/iRdesktop-src-1.0.5/NIBs/PropertyEditorResolution.xib:21:0 Pattern colors are not supported by the iPhone SDK for iOS versions prior to 3.0.


과 같은 에러가 난다. xib 파일의 패턴 컬러가 iOS 3.0 이전 버전에서는 지원되지 않는다는 얘기인 듯 하다.

무언가 속성 중에 3.0 이전버전으로 셋팅되어 있다는 얘기.

오류메세지를 더블 클릭해보면 인터페이스 빌더가 열리고 다시 인터페이스 빌더의 에러표시를 클릭해보면 PropertyEditorResolution.xib Info 창이 뜨며 Deployment Target 부분에 iOS 2.0 으로 되어있는것을 확인할 수 있다.

이를 3.0 으로 변경한뒤 저장하자.

다시 Build And Run 을 눌러보면 아무 에러없이 깔끔하게 빌드되고 시뮬레이터에서 정상적으로 동작하는 앱을 확인할 수 있다. :D


Posted by cloim
작업물2011. 3. 4. 21:00

OpenSSL 은 네트워크를 통한 데이터 통신에 쓰이는 보안 프로토콜인 TLS (Transport Layer Security, 전송계층 보안) 와 SSL (Secure Socket Layer, 보안 소켓 계층) 의 오픈소스 구현판이다 (@위키피디아).

TLS 는 넷스케이프 사에서 전자상거래 등의 보안을 위해 개발한 SSL 이 이후 IETF 에서 표준화 되면서 바뀐 이름이며 때문에 먼저 TLS 에 대해 간략하게 알아본다.

 

TLS (@IBM Developer Networks - OpenSSL API를 이용한 보안 프로그래밍, Part 1: API의 개요 (한글))

C/S 응용 프로그램이 네트워크로 통신하는 과정에서 도청, 간섭, 위조당하는 것을 방지하기 위해 설계되었다. 암호화를 통해 최종단의 인증, 통신 기밀성을 유지시켜 주기도 한다.

 

TLS 의 3단계 기본 절차

  1. 지원 가능한 알고리듬 서로 교환 : C/S 가 암호 Suite 를 교환, 키 교환 및 인증에 사용될 암호화 방법, 메시지 인증 코드 (MAC) 가 결정된다.
  2. 키 교환, 인증
  3. 대칭키 암호로 암호화하고 메시지 인증

 

왜 OpenSSL 인가?

SSL 툴킷의 종류에는 OpenSSL 말고도 GNU General Public License 하에 배포되는 GNU TLS 와 Mozilla Network Security Services (NSS) 도 있다고 한다. 그럼에도 불구하고 OpenSSL 이 많이 쓰이는 이유는 라이센싱이나 상위버전에 대한 지원, 외부 라이브러리 종속성 등 때문이라고 한다.

 

OpenSSL 을 사용하기 위해 필요한 것

  • 최신버전의 OpenSSL : OpenSSL 의 공식 사이트 에서 최신 버전 (혹은 버전별) 소스 코드를 다운 받을 수 있다. 이 소스 코드를 다운 받을 경우 라이브러리를 사용하기 위해서 직접 컴파일을 해야한다. 다른 방법으로 서드 파티가 컴파일하여 배포하는 바이너리 라이브러리를 사용해도 되며 이때는 물론 컴파일 하는 수고를 할 필요가 없다.
Posted by cloim