2017년 4월 9일 일요일

Windows에 OpenSSL 설치하기

 지난 번에 macOS에 OpenSSL을 설치해 보았으니 이번에는 Windows에 설치를 해 보려고 한다. macOS는 unix계열 운영체제이기 때문에 사실 별로 어려움 없이 설치가 되었다. 하지만 윈도우는 좀 더 복잡하고 설치에 필요한 프로그램이 몇 가지 더 있다. 그래서 macOS보다 Windows가 더 정리를 해놓는 의미가 있을 것 같아서 여기서 정리를 해 놓으려고 한다. 설치 버전은 64비트 버전으로 설치할 예정이다.

1. Source Download

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

2. Prerequisite

 Windows에서 OpenSSL을 빌드하고 설치하기 위해서는 아래 프로그램들이 필요하다.

  1. Perl
  2. OpenSSL의 빌드 환경을 Configure하기 위해서 Perl 스크립트 실행 환경이 필요하다. OpenSSL에서 추천하는 윈도우용 Perl은 ActiveState가 배포하는 ActivePerl이다. https://www.activestate.com/ActivePerl 사이트에서 다운로드할 수 있으므로 다운로드하여 설치하도록 하자. 설치 중 PATH에 perl의 경로를 등록하는 옵션이 있다. 반드시 선택해주도록 하자.
  3. Visual C++
  4. 당연히 C컴파일러가 있어야 한다. Windows에서는 가장 많이 사용할 것으로 생각되는 Visual C++컴파일러를 사용해서 빌드해 보도록 하겠다. Visual Studio 2015 무료 버전을 받아서 설치하도록 하자. 당연히 그 상위 버전이 있다면 그걸 사용하면 된다.
  5. Netwide Assembler (NASM)
  6. OpenSSL 소스에는 Assembly 코드가 포함되어있다. Windows 환경에서는 NASM을 사용해서 빌드하므로 NASM도 설치하도록 하자. http://www.nasm.us/에 접속하여 Windows용 설치파일을 받아서 설치하도록 하자. 설치 후에 NASM이 설치된 경로를 PATH에 등록해 주어야 한다.

3. Build & Install

 먼저 Visual Studio 2015를 설치했다면 시작메뉴에 'VS2015 x64 네이티브 도구 명령 프롬프트' 항목이 생성되어 있다. 이 메뉴를 관리자 권한으로 실행하도록 한다. 프롬프트가 뜨면 1번에서 압축을 푼 폴더의 루트로 이동하자. 다음은 아래 명령을 순서대로 수행하면 된다.
> perl Configure VC-WIN64A
> nmake
> nmake test
> nmake install
 위 명령 중 'make test'는 생략해도 되지만 혹시나 하는 마음이 있다면 수행해서 제대로 빌드가 되었는 지 확인해 보는 것이 좋을 것이다. 그리고 마지막 install 명령은 관리자 권한이 필요하기 때문에 처음에 명령 프롬프트를 관리자 권한으로 실행한 것이다.

 설치 경로를 특별히 지정하지 않으면 기본 경로는 C:\Program Files\OpenSSL이다. C:\Program Files\OpenSSL에 가서 확인해보면 아래와 같이 적절히 설치되어 있는 걸 확인할 수 있다.
  • C:\Program Files\OpenSSL\bin - openssl 실행 파일
  • C:\Program Files\OpenSSL\lib - openssl 라이브러리 파일
  • C:\Program Files\OpenSSL\include - openssl 헤더 파일
  • C:\Program Files\OpenSSL\html - openssl 메뉴얼

4. Etc...

 위 과정으로 설치는 끝이다. 간단히 참고할 만한 사항을 정리하자면..
  1. 헤더 파일은 C:\Program Files\OpenSSL\include 폴더에 있으므로 프로젝트의 헤더 파일 경로에 추가해주어야 한다. 그 안에 openssl 폴더가 있지만 C:\Program Files\OpenSSL\include까지만 지정해주어야 한다. 헤더 파일을 include할 때 #include <openssl/ssl.h>와 같이 지정하기 때문이다.
  2. openssl 라이브러리를 사용할 때 .lib 파일은 C:\Program Files\OpenSSL\lib 폴더에 있지만 .dll과 .pdb 파일은 C:\Program Files\OpenSSL\bin 밑에 있으므로 참고.
  3. 설치 과정 완료 후에 라이브러리 뿐 아니라 openssl.exe를 사용하려고 한다면 C:\Program Files\OpenSSL\bin 폴더의 경로를 PATH에 지정해 주는 게 좋겠다. 자동으로 등록해주진 않는다.

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이므로 원하는 대로 설정해서 사용한다.