OpenSSL 1.1 Indy

· 기능

현재 Indy는 OpenSSL 1.0.2 버전만 지원하며, 여러 고객이 OpenSSL 1.1 지원에 대해 문의했어요. OpenSSL 1.0.2는 표준 프로토콜 버전인 TLS 1.2를 지원하기 때문에 현재 사용할 수 있지만, OpenSSL 팀은 올해 말에 1.0 API 지원을 중단할 거예요. 이는 더 이상 업데이트가 릴리스되지 않고 이 라이브러리에 더 이상 수정 사항이 적용되지 않는다는 의미이므로, Indy 라이브러리에는 나쁜 소식이에요.

많은 내부 작업 끝에 OpenSSL 1.1 API를 지원하는 sgcWebSockets 라이브러리의 새 버전을 출시했어요. 

sgcWebSockets 4.3.2부터 지원됨

​현재 2가지 버전이 있어요: 

  1. 기본 버전: 이전 버전과 동일하며, IDE에 Indy가 설치되어 있어야 해요.
  2. Indy 버전: 맞춤 Indy 버전이며, OpenSSL API 1.1을 지원하고 Indy가 설치되어 있을 필요가 없어요. Indy 파일의 이름이 변경됐기 때문에, 자체 Indy 라이브러리를 유지하면서 맞춤 Indy 소스로 sgcWebSockets를 컴파일할 수 있어요.

OpenSSL 1.1을 활성화하려면 OpenSSL_Options에 접근해 사용할 API를 선택하기만 하면 돼요: oslAPI_1_0 또는 oslAPI_1_1. 클라이언트 예제:

oClient := TsgcWebSocketClient.Create(nil);
oClient.Host := '127.0.0.1';
oclient.Port := 443;
oClient.TLS := True;
oClient.TLSOptions.OpenSSL_Options.APIVersion := oslAPI_1_1;
oClient.Active := True; 

그 후에는 Indy가 기본적으로 사용하는 OpenSSL 1.0.2 대신 OpenSSL 1.1 라이브러리를 배포할 수 있어요. 운영체제에 따라 openSSL 라이브러리 배포 여부가 달라져요. 

플랫폼 ​API 1.0 API 1.1 정적 / 동적 링킹
​Windows (32비트 및 64비트) ​libeay32.dll and ssleay32.dll ​libcrypto-1_1.dll and libssl-1_1.dll ​동적
​OSX​libcrypto.dylib, libssl.dylib​libcrypto.1.1.dylib, libssl.1.1.dylib​동적
​iOS 기기 (32비트 및 64비트)​libcrypto.a and libssl.a​libcrypto.a and libssl.a​정적
​iOS 시뮬레이터​libcrypto.dylib, libssl.dylib​libcrypto.1.1.dylib, libssl.1.1.dylib​동적
​Android 기기​libcrypto.so, libssl.so​libcrypto.so, libssl.so​동적