2017년 4월 4일 화요일

macOS에 OpenSSL 설치하기

 예전에는 macOS에 기본적으로 OpenSSL Framework가 탑재되어 있었는데 언제부턴가 Xcode를 설치하고 OpenSSL Framework를 찾아보면 이게 없다고 나온다. 정확히 기억은 나지 않지만 애플에서 공식적으로 삭제했다는 얘기도 들은 것 같고 최신 버전으로 유지가 되는 것도 아니었기 때문에 필요할 때마다 새로 설치를 해서 사용을 해왔다.  문제는 매번 설치를 하려고 할 때마다 인터넷을 찾아보면 여러 가지 설치방법이 난무하여 이게 제대로 설치한 건지 확신이 서지 않았다는 것이다.

 그래서 오늘 새로 설치를 할 일이 있어서 여기서 정리를 해 볼까 한다.

1. Source Download

 아래 OpenSSL 사이트에 접속해서 최신 소스를 다운로드하도록 하자.
    URL: https://www.openssl.org/
현재 최신 버전은 openssl-1.1.0e.tar.gz 이다. 어차피 설치되고 나면 지워도 되는 파일이므로 원하는 폴더에 압축을 풀고 그 폴더로 이동한다.

2. Build & Install

 압축을 푼 폴더의 루트에 보면 INSTALL 파일이 있는데 이 파일이 설치 방법에 대해 자세히 나와있는 파일이다. 파일을 열어보면 Unix, OpenVMS, Windows의 경우에 대해서 각각 설치 방법이 설명되어있다. macOS는 Unix 계열 운영체제이므로 Unix를 따르면 된다. 예전에는 macOS에 설치를 하기위한 부분이 조금 있었던 것 같은데 지금은 전혀 없다. 이 말은 Unix와 똑같은 방법으로 설치를 하면된다는 뜻이다. 실제로 config 단계에서 아무 옵션을 지정하지 않아도 출력되는 메시지들을 자세히 보면 모두 제대로 인식되는 것으로 보인다. 설치 방법은 터미널을 열고 아래 명령을 순서대로 수행하면 된다.
$ ./config
$ make
$ make test
$ sudo make install
 위 명령 중 'make test'는 생략해도 되지만 혹시나 하는 마음이 있다면 수행해서 제대로 빌드가 되었는 지 확인해 보는 것이 좋을 것이다. 그리고 마지막 install 명령은 super user 권한이 필요하기 때문에 sudo 를 붙여주어야 한다. INSTALL 문서에는 나와있지 않지만 macOS에서는 반드시 필요하다.

 config를 수행해서 출력 메시지들을 자세히 보면 darwin64-x86_64 버전으로 빌드가 된다는 것을 알 수 있다. 설치 경로를 특별히 지정하지 않으면 기본 경로는 /usr/local이다. /usr/local에 가서 확인해보면 아래와 같이 적절히 설치되어 있는 걸 확인할 수 있다.
  • /usr/local/bin - openssl 실행 파일
  • /usr/local/lib - openssl 라이브러리 파일
  • /usr/local/include - openssl 헤더 파일
  • /usr/local/share - openssl 문서 & 메뉴얼 파일
  • /usr/local/ssl - openssl 설정 & 인증서 경로
 /usr/local이 아닌 다른 경로에 설치하고 싶다면 ./config 명령에 아래와 같은 옵션을 주면 된다.
$ ./config --prefix=/other/path

3. Etc...

 위 과정으로 설치는 끝이다. 간단히 참고할 만한 사항을 정리하자면..
  1. 원래 macOS에 탑재된 openssl 실행파일은 /usr/bin에 있고 새로 설치된 openssl 실행파일은 /usr/local/bin에 있으므로 터미널에서 그냥 openssl을 실행하면 기존 구버전 openssl이 실행될 것이다. 새로 설치된 openssl을 실행하려면 full path를 지정하던가 사용자 환경에 맞게 쉘의 PATH설정을 바꿔서 /usr/local/bin에 있는 openssl이 실행되도록 해주어야 한다. 나같은 경우에는 운영체제의 기본 설정을 바꾸기 싫어하고 라이브러리와 헤더만 사용하기 때문에 따로 설정을 바꿔주진 않고 그대로 사용중이다.
  2. Xcode에서 openssl 라이브러리를 사용하려면 프로젝트의 빌드 세팅에서 헤더 파일 경로를 추가해 주어야 한다. 경로는 /usr/local/include 이다. 그 안에 openssl 폴더가 있지만 openssl 경로를 포함시키지 않아야 한다. 헤더파일을 include할 때 #include <openssl/ssl.h>처럼 하기 때문이다.
  3. 라이브러리 파일은 /usr/local/lib에 설치되어있고 static 라이브러리는 libssl.a, libcrypto.a 두 개 파일이다. dynamic 라이브러리는 확장자가 .a가 아니고 .dylib이므로 원하는 대로 설정해서 사용한다.

0 개의 댓글:

댓글 쓰기