본문 바로가기

리눅스

[draft] 우분투에서 OpenSSL을 소스 코드로 컴파일하여 설치하는 방법

우분투에서 OpenSSL을 소스 코드로 컴파일하여 설치하는 방법

기본 패키지(OpenSSL)가 아닌 사용자가 지정한 경로에 최신 버전을 설치하는 방식으로 진행합니다.

테스트 환경

docker run -it --rm anti1346/ubuntu2204:latest bash

1. 필수 의존성 패키지 설치

OpenSSL 컴파일을 위해 필요한 기본 빌드 도구와 라이브러리를 설치합니다.

sudo apt-get update
sudo apt-get install -y build-essential make zlib1g-dev

참고

  • 일부 환경에서는 Perl 모듈이 필요할 수 있습니다.
libfindbin-libs-perl

2. OpenSSL 소스 코드 다운로드

OpenSSL 공식 사이트에서 최신 소스 코드를 다운로드합니다.

☞ OpenSSL 다운로드 : https://www.openssl.org/source/

cd /usr/local/src
wget https://www.openssl.org/source/openssl-3.1.1.tar.gz
tar xzf openssl-3.1.1.tar.gz
cd openssl-3.1.1

3. OpenSSL 컴파일 및 설치

다음 옵션을 사용하여 OpenSSL을 컴파일합니다.

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make -j $(($(nproc) + 1))
sudo make install
make -j $(($(nproc) + 1)) 옵션은 CPU 코어 수를 기반으로 병렬 컴파일을 수행하여 빌드 시간을 단축합니다.

4. OpenSSL 라이브러리 경로 등록

OpenSSL이 사용하는 라이브러리를 시스템 라이브러리 경로에 등록합니다.

echo "/usr/local/openssl/lib" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig

설명

  • /etc/ld.so.conf.d/ : 동적 라이브러리 검색 경로 설정 디렉터리
  • ldconfig : 라이브러리 캐시 갱신

또한 현재 세션에서 라이브러리를 사용할 수 있도록 환경 변수를 설정합니다.

export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH

필요할 경우 .bashrc 또는 .profile에 추가하여 영구 적용할 수 있습니다.

5. OpenSSL 버전 확인

설치된 OpenSSL의 버전을 확인합니다.

/usr/local/openssl/bin/openssl version
OpenSSL 3.1.1 30 May 2023 (Library: OpenSSL 3.1.1 30 May 2023)

6. OpenSSL 바이너리가 사용하는 라이브러리 확인

OpenSSL 실행 파일이 어떤 라이브러리를 사용하는지 확인합니다.

ldd /usr/local/openssl/bin/openssl
$ ldd /usr/local/openssl/bin/openssl
	linux-vdso.so.1 (0x0000ffff96c6f000)
	libssl.so.3 => /usr/local/openssl/lib/libssl.so.3 (0x0000ffff96a70000)
	libcrypto.so.3 => /usr/local/openssl/lib/libcrypto.so.3 (0x0000ffff96620000)
	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff96470000)
	/lib/ld-linux-aarch64.so.1 (0x0000ffff96c36000)
	libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000ffff96440000)

이를 통해 OpenSSL이 /usr/local/openssl/lib 경로의 라이브러리를 정상적으로 사용하는지 확인할 수 있습니다.