현재 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가지 버전이 있어요:
- 기본 버전: 이전 버전과 동일하며, IDE에 Indy가 설치되어 있어야 해요.
- 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 | 동적 |
