Microsoft 社는 2022년 6월 15일 Internet Explorer 11의 지원을 종료했습니다.

openssl-3.0.9 / openssl-3.1.1 on Fedora 11

제목

openssl-3.0.9 / openssl-3.1.1 on Fedora 11

Fedora 11 에서 openssl-3.0.9 과 openssl-3.1.1 은 에러가 발생하는 원인 및 해결 방법도 동일하다.

0. 주의사항

0.1. 설치되어 있던 버전은 충분히 낡아 빠졌지만 걷어내지는 않는다.

OpenSSL 0.9.8n-fips 을 지우면 curl, yum 은 물론이고, cpan 도 사용할 수 없다.

만약 실수로 지웠다면, 다른 장비를 통해서 다운로드 한 뒤에 rpm 명령어로 다시 설치한다.

0.2. cpan 을 사용한다.

perl 은 CPAN 이라는 독자적인 모듈 관리 도구가 있고, Fedora 11 에서도 잘 동작한다.

yum 저장소의 perl 모듈 버전은 너무 낡았고, (항상 그런 것은 아니지만) 문제가 발생하는 경우가 있다.

1. 준비작업

1.1. 다운로드

https://www.openssl.org/source/ 에서 다운로드 한다.

Fedora 11 에서 직접 다운로드 할 수 없고, 다른 장비에서 다운로드 한 파일을 sftp 따위로 올려야 한다.

$ curl -O https://www.openssl.org/source/openssl-3.0.9.tar.gz

혹은

$ curl -O https://www.openssl.org/source/openssl-3.1.1.tar.gz

1.2. gcc 및 make 설치

yum install gcc make -y

1.3. 의존성

4~5개의 perl 모듈이 있어야 한다. (openssl-1.1.1u 에서와는 달리) 이 작업은 생략할 수 없다.

  • IPC::Cmd : config 에서 필요
  • Test::More : make test 에서 필요. IPC::Cmd 를 설치할 때, 같이 설치된다.
  • Digest::SHA : (enable-fips 인 경우에만) make 에서 필요
  • parent : make test 에서 필요
  • Test::Harness : make test 에서 필요. cpan 으로 설치해야 한다.

1.3.1. CPAN 설치

다음과 같이 설치한다.

$ yum -y install perl-CPAN

"Test::Harness" 도 같이 설치되는데, 반드시 cpan 으로 다시 설치해야 한다.

1.3.2. 의존성 있는 모듈 설치

CPAN shell 을 실행한다.

$ perl -MCPAN -e shell

의존성 있는 perl 모듈을 설치한다.

cpan[1]> install IPC::Cmd
cpan[2]> install parent
cpan[3]> install Test::Harness
cpan[4]> install Digest::SHA

Test::Harness 은 (yum 으로 cpan 을 설치하면서 같이 설치되었다고 하더라도) cpan 에서 다시 설치해야 한다.

2. 컴파일 및 설치

설치 디렉토리(--prefix) 와 openssl 디렉토리(--openssldir) 는 알아서 변경한다.

대부분의 Linux 배포판들은 /usr 혹은 / 이 설치 디렉토리(--prefix)이지만, 컴파일해서 설치하는 것들은 /usr/local 이나 /opt 아래에 두는 경우가 많다.

$ mkdir -p logs/openssl-3.0.9
$ tar xvfz openssl-3.0.9.tar.gz > logs/openssl-3.0.9/tar.`date +%Y%m%d.%H%M%S`.log 2>&1
$ cd openssl-3.0.9
$ ./config enable-fips --prefix=/opt/openssl-3.0.9 --openssldir=/opt/ssl/openssl-3.0.9 > ../logs/openssl-3.0.9/config.`date +%Y%m%d.%H%M%S`.log 2>&1
$ make > ../logs/openssl-3.0.9/make.`date +%Y%m%d.%H%M%S`.log 2>&1
$ make test > ../logs/openssl-3.0.9/test.`date +%Y%m%d.%H%M%S`.log 2>&1
$ make install > ../logs/openssl-3.0.9/install.`date +%Y%m%d.%H%M%S`.log 2>&1

혹은

$ mkdir -p logs/openssl-3.1.1
$ tar xvfz openssl-3.1.1.tar.gz > logs/openssl-3.1.1/tar.`date +%Y%m%d.%H%M%S`.log 2>&1
$ cd openssl-3.1.1
$ ./config enable-fips --prefix=/opt/openssl-3.1.1 --openssldir=/opt/ssl/openssl-3.1.1 > ../logs/openssl-3.1.1/config.`date +%Y%m%d.%H%M%S`.log 2>&1
$ make > ../logs/openssl-3.1.1/make.`date +%Y%m%d.%H%M%S`.log 2>&1
$ make test > ../logs/openssl-3.1.1/test.`date +%Y%m%d.%H%M%S`.log 2>&1
$ make install > ../logs/openssl-3.1.1/install.`date +%Y%m%d.%H%M%S`.log 2>&1

사양이 낮은 서버에서는 (설치시간을 단축하기 위해서) make test 명령을 생략하기도 한다.

3. 적용

3.1. 현재 환경에 적용

현재 환경에서는 다음과 같이 적용한다.

$ export LD_LIBRARY_PATH=/opt/openssl-3.0.9/lib
$ export PATH=/opt/openssl-3.0.9/bin:${PATH}

pkg-config 를 사용하는 경우 다음의 내용도 추가할 수 있다.

$ export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/opt/openssl-3.0.9/lib/pkgconfig

혹은

$ export LD_LIBRARY_PATH=/opt/openssl-3.1.1/lib
$ export PATH=/opt/openssl-3.1.1/bin:${PATH}

pkg-config 를 사용하는 경우 다음의 내용도 추가할 수 있다.

$ export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/opt/openssl-3.1.1/lib/pkgconfig

3.2. 현재 로그인한 사용자에게 적용

현재 로그인한 사용자에게 적용하려면, ".bash_profile" 파일의 끝에 위의 내용을 추가한다.

3.3. 시스템 전체에 적용

3.3.1. ld.so.conf 변경

"/etc/ld.so.conf.d/openssl.conf" 파일을 편집(추가)한다.

$ vi /etc/ld.so.conf.d/openssl.conf

다음의 내용으로 교체(추가)한다.

/opt/openssl-3.0.9/lib

혹은

/opt/openssl-3.1.1/lib

변경사항을 적용한다.

$ ldconfig

3.3.2. PATH 환경변수 변경

"/etc/bashrc" 파일에 PATH 환경변수를 변경한다.

export PATH=/opt/openssl-3.0.9/bin:${PATH}

pkg-config 를 사용하는 경우 다음의 내용도 추가할 수 있다.

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/opt/openssl-3.0.9/lib/pkgconfig

혹은

export PATH=/opt/openssl-3.1.1/bin:${PATH}

pkg-config 를 사용하는 경우 다음의 내용도 추가할 수 있다.

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/opt/openssl-3.1.1/lib/pkgconfig

4. 문제해결

설치과정에서 발생하는 에러 및 그 원인에 대해 논한다.

해결방법은 전술한 의존성 있는 모듈 설치에 대한 내용을 참조한다.

4.1. Can't locate IPC/Cmd.pm

config 에서 발생한다.

"IPC::Cmd" 를 설치하지 않았다.

4.2. Can't locate Digest/SHA.pm

make 에서 발생한다.

enable-fips 에서만 발생한다.

"Digest::SHA" 를 설치하지 않았다.

4.3. Can't locate parent.pm

make test 에서 발생한다.

"parent" 를 설치하지 않았다.

4.4. Can't call method "failed" on an undefined value at ./test/run_tests.pl line 227.

make test 에서 발생한다.

make test V=1 에서는 에러가 발생하지 않고, make test VF=1 에서는 에러가 발생한다.

enable-fips 옵션이 없는 경우에도 발생하다.

원인은 낮은 버전의 "Test::Harness" 가 설치되어 있기 때문이다.

"Test::Harness" 을 cpan 으로 다시 설치해야 한다.

4.5. 읽을거리

  • INSTALL.md : 설치방법에 대한 안내
  • README-FIPS.md : FIPS 에 관한 안내
  • test/README.md : make test 명령에 대한 안내
제목

첨부파일