이 작업을 수행하면 openssl version
다음 메시지가 나타납니다.
OpenSSL 1.1.0j 20 Nov 2018 (Library: OpenSSL 1.1.0k 28 May 2019)
j
k
여기서 라이브러리 버전과의 차이점은 무엇을 의미하나요?
openssl
를 실행하여 업데이트 하려고 시도한 apt-get update && apt-get install openssl
후 a를 실행하면 openssl version
다음과 같은 결과가 나타납니다.
OpenSSL 1.1.0k 28 May 2019
그런데 저는 Linux를 처음 접했기 때문에 이러한 버전 제어 세부 사항에 대해 약간 혼란스러워합니다.
답변1
OpenSSL은 주로도서관: 프로그램이 사용할 수 있는 서브루틴 모음입니다. 이는 실제로 두 라이브러리의 조합입니다. /usr/lib/libcrypto.so.1.1
여기에는 암호화 기본 요소 및 인증서 관리와 관련된 서브루틴이 포함되어 있고 /usr/lib/libssl.so.1.1
TLS 프로토콜과 관련된 서브루틴이 포함되어 있습니다. 파일 이름의 일부 1.1
는 라이브러리 버전의 일부이며 파일이 포함된 디렉터리는 다를 수 있습니다(예: 64비트 PC의 Ubuntu에 있음 /usr/lib/x86_64-linux-gnu
). 이러한 라이브러리는 Debian/Ubuntu 및 파생 배포판(역시 버전 번호의 관련 부분) libssl1.1
에서 패키지의 일부로 제공됩니다 .1.1
/usr/bin/openssl
OpenSSL에는 라이브러리의 함수에 대한 명령줄 인터페이스를 제공하는 명령줄 도구도 함께 제공됩니다 . 암호화 기본 요소를 벤치마킹하고, 키와 인증서를 조작하고, 일부 테스트를 실행하는 데 사용할 수 있습니다. 데이터 암호화와 같은 작업에도 사용할 수 있지만 인터페이스는 실제 사용에는 적합하지 않습니다. 인터페이스는 너무 낮은 수준이고 대부분의 사용 방식에서 안전하지 않습니다. 명령줄 도구는 소프트웨어 패키지의 일부로 제공됩니다.libcrypto
libssl
openssl
라이브러리 패키지에는 부분 버전 번호가 포함되고 라이브러리 파일에는 부분 버전 번호가 포함되는 것과 같은 이유로 라이브러리 패키지는 명령줄 프로그램이 포함된 패키지와 구분됩니다. 여러 버전의 라이브러리를 설치할 수 있습니다. 이는 다양한 버전의 라이브러리용으로 작성된 프로그램이 있는 경우 필요합니다.ABI도서관의. 반면에 하나의 openssl
명령만 설치할 수 있습니다.
1.1.0j와 1.1.0k는 호환 가능한 ABI를 가질 만큼 충분히 유사한 두 가지 OpenSSL 버전입니다. 일반적으로 프로그램 버전이 중간에 점이 있는 숫자로 구성되어 있는 경우 왼쪽의 숫자 증가는 주요 변경 사항을 나타내고 오른쪽의 숫자 증가는 버그 수정과 같은 매우 작은 변경 사항을 나타냅니다. OpenSSL은 가장 오른쪽 숫자나 심지어 문자까지 증가시켜 상당한 변경을 하는 경향이 있는데, 이는 다소 특이한 현상입니다.
일반적으로 동일한 버전의 명령줄 도구 및 라이브러리가 있으며, 이전 ABI로 구축된 프로그램의 일부 레거시 라이브러리 버전도 있을 수 있습니다. 예를 들어 Ubuntu 18.04는 OpenSSL 1.1.1과 함께 제공되지만 libssl1.0.0
1.0.0 ABI로 빌드된 프로그램용 버전 1.0.2가 포함된 라이브러리도 제공하며 1.0.2는 여전히 OpenSSL과 호환됩니다. 최신 시스템에서 프로그램은 openssl
모두 동일한 소스 패키지에서 제공되기 때문에 항상 사용하는 라이브러리와 동일한 버전에서 제공됩니다. 그러나 최신이 아닌 시스템에서는 라이브러리를 1.1.0k로 업그레이드했지만 여전히 명령줄 실행 파일 1.1.0j의 약간 오래된 버전이 있을 수 있습니다.