OpenSSL을 소스 설치하거나 업데이트할 때, 설정이 꼬여서 SSH나 NTP 같은 중요 서비스가 실행되지 않을 수 있습니다.
특히, OpenSSL은 시스템의 다른 패키지들과 많이 의존적이기 때문에 설치 시 경로 설정과 옵션을 신중히 설정해야 합니다.
이번 글에서는 OpenSSL 설치 과정에서 발생한 문제 해결하는 방법을 정리합니다.
1. 문제 상황: OpenSSL 설치 후 SSH와 NTP 데몬 오류
OpenSSL을 소스 설치한 후, SSH나 NTP 데몬을 재시작할 때 아래와 같은 오류 메시지가 발생할 수 있습니다.
# SSH 데몬 재시작 시 오류
[root@localhost]# systemctl restart sshd
Stopping sshd: [ OK ]
Starting sshd: [FAILED]
OpenSSL version mismatch. Built against 10000003, you have 1000108f
# NTP 데몬 재시작 시 오류
[root@localhost]# systemctl restart ntpd
Stopping ntpd: [ OK ]
Starting ntpd: [FAILED]
2. 문제 원인
OpenSSL 소스 설치 시, 기본 경로(/usr 등)를 사용하거나 동적 라이브러리(.so 파일) 구성이 올바르지 않을 경우 발생합니다.
2.1 설치 경로 문제
소스 설치 시 --prefix=/usr 옵션을 사용하면 기존의 OpenSSL 패키지(RPM) 파일들을 덮어서 설치됩니다.
시스템이 새 OpenSSL 라이브러리를 참조하지만, 의존성을 충족하지 못하는 상황이 발생합니다.
2.2 동적 라이브러리 문제
OpenSSL 소스 설치 시 shared 옵션이 누락되면 .so 파일(동적 라이브러리)이 생성되지 않습니다.
동적 라이브러리가 없으면 SSH와 NTP 같은 프로그램이 OpenSSL 라이브러리를 로드하지 못해 오류가 발생합니다.
3. OpenSSL 설치 준비
3.1 기존 OpenSSL 버전 확인
현재 OpenSSL 버전과 RPM 패키지 상태를 확인합니다. 이는 문제 해결 과정에서 기존 상태로 복구할 때 유용합니다.
# OpenSSL 버전 확인
openssl version
# 설치된 OpenSSL 관련 패키지 확인
rpm -qa | grep openssl
3.2 소스 다운로드
OpenSSL 공식 웹사이트에서 최신 소스를 다운로드합니다.
wget https://www.openssl.org/source/openssl-1.1.1v.tar.gz
tar -xvzf openssl-1.1.1v.tar.gz
cd openssl-1.1.1v
4. OpenSSL 설치 방법
4.1 설치 명령어
소스 설치 시 기존 시스템 디렉토리(/usr, /usr/lib 등)와 충돌하지 않도록 독립된 경로를 설정해야 합니다.
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib-dynamic
make
make install
- --prefix: 설치 경로 지정 (예: /usr/local/openssl)
- --openssldir: 설정 파일 경로 지정
- shared: 동적 라이브러리 생성
- zlib-dynamic: zlib 압축 라이브러리를 동적으로 링크
4.2 환경 변수 설정
새롭게 설치된 OpenSSL을 기본 경로에서 사용하도록 PATH 환경 변수를 설정합니다.
echo "export PATH=/usr/local/openssl/bin:\$PATH" >> /etc/profile
source /etc/profile
5. 문제 해결: 기존 시스템과 충돌 시
OpenSSL 소스 설치 후에도 문제가 발생할 경우, 아래 절차를 따라 해결할 수 있습니다.
5.1 잘못된 설치 파일 제거
잘못된 소스 설치로 인해 기존 파일이 덮어씌워졌다면 이를 제거해야 합니다.
make clean
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib-dynamic
find . -type f > installed_files.txt
그 후, /usr 또는 /usr/lib64에 잘못 설치된 파일을 수동으로 삭제합니다.
5.2 기존 OpenSSL 패키지 복원
RPM 기반 시스템에서는 다음 명령어로 기존 OpenSSL 패키지를 복원할 수 있습니다. (최신으로 설치됨)
# 기존 패키지 재설치
yum reinstall openssl openssl-libs
6. 설치 후 점검
6.1 동적 라이브러리 확인
설치 후, /usr/local/openssl/lib 디렉토리에 .so 파일이 생성되었는지 확인합니다.
ls /usr/local/openssl/lib
출력 예시
libcrypto.a
libcrypto.so
libssl.a
libssl.so
.so 파일이 존재해야 SSH, NTP와 같은 데몬이 정상 작동합니다.
6.2 SSH 및 NTP 데몬 재시작
SSH와 NTP 데몬이 정상적으로 작동하는지 확인합니다.
systemctl restart sshd
systemctl restart ntpd
7. 정적 라이브러리와 동적 라이브러리의 차이
구분 | 정적 라이브러리 (.a) | 동적 라이브러리 (.so) |
특징 | 실행 파일에 라이브러리가 포함됨 | 실행 시 라이브러리를 동적으로 로드 |
장점 | 배포 시 독립적, 버전 충돌 없음 | 시스템 메모리 절약, 업데이트 용이 |
단점 | 실행 파일 크기 증가, 업데이트 시 재컴파일 필요 | 버전 충돌 가능성, 설치 및 관리가 비교적 복잡 |
'OS > Linux' 카테고리의 다른 글
Linux - CentOS 7/8 & Ubuntu 18/20 서버 튜닝: 성능과 안정성을 높이는 방법 (0) | 2024.11.27 |
---|---|
Linux - Turnserver 프로세스 및 트래픽 문제 자동화 (0) | 2024.11.19 |
Linux - CentOS 7 프로세스 크래시 디버깅 (0) | 2024.11.14 |
Linux - CentOS 8 네트워크 설정(NetworkManager / nmcli) (0) | 2024.11.13 |
Linux - Crontab에서 Command Not Found 오류 해결 (0) | 2024.11.12 |