sgcCustomIndy TLS 1.3. ALPN 기반 HTTP/2. 제거할 것 없음.

표준 Indy 라이브러리는 ALPN을 지원하지 않고, OpenSSL 1.1.1이나 3.x를 통한 TLS 1.3도 지원하지 않아요. sgcWebSockets Enterprise는 이를 지원하는 커스텀 Indy 빌드를 함께 제공해요. sgcCustomIndy는 바로 그 빌드를 sgcWebSockets Core로 가져오며, IDE에 이미 있는 Indy 옆에 설치돼요.

  • ALPN과 HTTP/2
  • TLS 1.3
  • OpenSSL 1.1.1 및 3.x
  • 정적 OpenSSL
  • Delphi 7부터 13까지
  • C++ Builder
표준 INDY IdGlobal.pas IdTCPClient.pas IdSSLOpenSSL.pas IDE에 이미 있고, 설치된 채로 남아요 커스텀 INDY sgcIdGlobal.pas sgcIdTCPClient.pas sgcIdSSLOpenSSL.pas 팩이 추가하며, 이름이 충돌하지 않아요 ALPN을 사용한 TLS 1.3 핸드셰이크 클라이언트 서버 ClientHello, ALPN [h2, http/1.1] ServerHello, ALPN h2 하나의 연결 위의 HTTP/2 스트림
  • 0제거해야 할 Indy 라이브러리
  • 0Delphi 7에서의 Indy 10 설치
  • 3표준 Indy에 없는 기능
  • 1정적 OpenSSL용 유닛
  • 2정적 링크 대상, Windows 32비트와 64비트
무엇이 열리는지

표준 Indy 라이브러리가 할 수 없는 세 가지.

아래 항목은 모두 그 위에 놓인 컴포넌트가 아니라 Indy 계층 자체의 기능이에요. Indy 라이브러리를 교체하는 것이 이 기능들을 켜는 방법인 이유가 바로 여기에 있어요.

CLIENTHELLO ALPN 제안 h2 http/1.1 서버 선택 h2 스트림 1 스트림 3 스트림 5 HTTP/2 스트림 TLS 핸드셰이크 안에서 협상되며, 어떤 HTTP 컴포넌트보다도 아래 계층이에요.
ALPN

HTTP/2가 기반으로 삼는 확장.

  • 클라이언트가 말할 수 있는 프로토콜을 알리면, 서버가 TLS 핸드셰이크 중에 그중 하나를 골라요.
  • 이 협상은 HTTP 컴포넌트가 닿을 수 있는 범위보다 아래인 TLS 계층 안에서 일어나요.
  • 표준 Indy 라이브러리는 이를 지원하지 않아요. 커스텀 Indy 라이브러리는 ALPN을, 그리고 그에 따른 HTTP/2를 사용할 수 있게 해요.
표준 INDY TLS 1.3 구형 OpenSSL API에 묶임 커스텀 INDY TLS 1.3 OpenSSL 1.1.1 OpenSSL 3.x 클라이언트와 서버가 TLS 1.3을 요구하는 엔드포인트에 닿을 수 있어요.
TLS 1.3, OpenSSL 1.1.1 및 3.x

이제야 닿을 수 있는 최신 OpenSSL 브랜치.

  • TLS 1.3에는 OpenSSL 1.1.1 또는 OpenSSL 3.0.0이 필요한데, 표준 Indy 라이브러리는 이 브랜치들을 지원하지 않아요.
  • 커스텀 Indy 라이브러리는 지원하므로, 그 위에서 만든 클라이언트나 서버는 TLS 1.3을 요구하는 엔드포인트와 TLS 1.3으로 협상해요.
  • 더 이상 구형 OpenSSL API가 제공하는 범위에 묶이지 않아요.
배포할 파일 3개 app.exe libssl libcrypto 배포할 파일 1개 app.exe OpenSSL 링크됨 uses sgcIdSSLOpenSSL_Static; Windows 32비트와 64비트, Delphi XE2 이상.
정적 OpenSSL

실행 파일 안에 들어가는 OpenSSL.

  • OpenSSL을 libcrypto와 libssl DLL에서 런타임에 로드하는 대신 애플리케이션에 직접 링크해요.
  • TLS 애플리케이션을 파일 하나로 배포하며, 클라이언트 컴포넌트와 서버 컴포넌트 모두 마찬가지예요.
  • 커스텀 Indy 라이브러리를 사용할 때만 적용되며, Delphi XE2 이상의 Windows 32비트와 64비트에서 동작해요.
공존

이미 쓰고 있는 Indy 옆에 나란히 놓여요.

IDE의 Indy 라이브러리를 교체하는 일은 아무도 하고 싶어 하지 않는 작업이라, 이 팩은 그것을 요구하지 않아요. 커스텀 Indy 파일에는 sgc 접두사가 붙어서, IdGlobal 은 sgcIdGlobal이 되고, 두 버전이 문제없이 공존해요.

제거할 것 없음

IDE에 이미 있는 Indy가 무엇이든 설치된 채로, 등록된 채로 남아요. 패키지를 제거했다가 나중에 되돌리거나 IDE 프로필을 두 개 유지해야 하는 단계는 없어요.

기존 프로젝트는 그대로

표준 Indy 라이브러리로 이미 빌드하던 것은 바이트 단위로 동일한 유닛을 대상으로 계속 컴파일돼요. 커스텀 빌드는 추가되는 것일 뿐, 교체가 아니에요.

컴파일러 지시자 하나

커스텀 Indy 라이브러리 사용 여부는 SGC_CUSTOM_INDY 지시자로 제어하며, 이 지시자는 sgcVer.inc에 있어요. 커스텀 빌드를 다시 끄는 것도 한 줄 수정이에요.

언제나처럼 전체 소스

이름을 바꾼 Indy 유닛은 라이선스와 함께 소스로 제공되므로, 프로젝트 설정으로 컴파일되고 라이브러리의 나머지 부분처럼 디버거에서 단계별로 추적할 수 있어요.

Delphi 7에 Indy 10 설치 불필요

Delphi 7에는 더 오래된 Indy가 들어 있어요. 커스텀 Indy 라이브러리가 함께 들어 있으므로, 찾아서 IDE에 설치하고 컴포넌트와 버전을 맞춰 관리해야 할 Indy 10이 없어요.

Enterprise가 사용하는 빌드

커스텀 Indy 라이브러리는 새로 나온 것이 아니에요. sgcWebSockets Enterprise가 지금까지 기반으로 삼아 온 바로 그 라이브러리이며, 이 팩은 sgcWebSockets Core에서 그것에 이르는 경로예요.

코드

유닛 하나, 배포 파일 하나.

설정할 것이 없어요. sgcIdSSLOpenSSL_Static 유닛을 uses 절에, 예를 들어 메인 .dpr에 추가하면, 다음 실행부터 애플리케이션이 실행 파일에 링크된 OpenSSL을 사용해요.

Project1.dpr

uses
  sgcIdSSLOpenSSL_Static;

// That is the whole configuration. No compiler
// directive to enable, no OpenSSL API version to
// choose. Remove the unit again and the application
// goes back to loading the OpenSSL DLLs.

sgcVer.inc, 소스 폴더에 있어요

{$DEFINE SGC_CUSTOM_INDY}

// One define controls the custom Indy library.
// Static OpenSSL linking has no effect without it,
// and turning the custom build off again is a
// one line change.

정적 링크를 쓸 수 없는 버전이나 플랫폼에서도 문제가 생기지 않아요. 애플리케이션은 이전처럼 OpenSSL DLL을 계속 로드하므로, 같은 소스가 어디서나 빌드돼요. 정적 링크가 적용되는 범위

플랫폼

이 형식의 오브젝트 파일을 링크할 수 있는 곳.

  • Windows 32비트
  • Windows 64비트

컴파일러

이전 버전은 잘못된 오브젝트 파일 형식이라고 보고하므로, 정적 링크는 Delphi XE2부터 시작해요.

  • Delphi XE2 이상

선행 조건

커스텀 Indy 라이브러리를 사용하지 않으면 정적 링크는 효과가 없어요.

  • SGC_CUSTOM_INDY 정의됨
sgcWebSockets의 일부

별도 주문이 아니라 애드온이에요.

sgcCustomIndy는 sgcWebSockets Core 라이선스에 붙어요. Core 주문 안에서 첫 번째 추천 애드온으로 제공되므로, sgcAI, sgcMQ, sgcSocial을 주문하는 도중에 클릭 한 번으로 추가할 수 있고, 같은 라이선스로 함께 도착해요.

sgcCustomIndy를 더한 Core

Enterprise가 사용하는 것과 동일한 커스텀 빌드를 Core 주문 중에 추가해요. 전체 소스 코드와 1년간의 업데이트가 포함돼요.

€149 / 개발자

sgcAuth와 sgcHTTP에 포함

WebAuthn 지원이 있는 sgcAuth 및 HTTP/2, gRPC 클라이언트가 있는 sgcHTTP 는 이 팩이 필요하므로, 둘 중 어느 쪽을 주문해도 sgcCustomIndy가 항상 포함돼요. 팩의 표시 가격에 이미 포함되어 있어요.

Enterprise와 All-Access에 이미 포함

커스텀 Indy 라이브러리는 sgcWebSockets Enterprise와 eSeGeCe All-Access의 구성 요소이며 기본으로 활성화되어 있어요. 둘 중 하나를 보유하고 있다면 추가할 것이 없어요. Standard와 Professional은 표준 Indy 라이브러리를 사용해요.

혼동하기 쉬운 제품이 있어요: sgcIndy는 IDE의 Indy를 대신해 설치하는 전체 Indy 패키지로, 이것과는 다른 제품이에요. 필요한 에디션 확인하기

가격 보기

Indy 계층을 최신 상태로.

ALPN과 HTTP/2, OpenSSL 1.1.1 및 3.x 기반 TLS 1.3, Windows에서 실행 파일 안에 링크되는 OpenSSL. 이 모든 것이 이미 갖고 있는 Indy 옆에 나란히 놓여요. sgcWebSockets 체험판에는 커스텀 Indy를 포함한 전체 Enterprise 기능이 들어 있어요.

블로그 최신 소식

모든 글 보기 →

지금 eSeGeCe의 sgcCustomIndy 관점을 보고 있어요.

다른 관점 보기 →
30일 환불 보장만족하지 않으세요? 구매 후 30일 이내에 전액 환불을 요청하세요. 환불 정책 보기