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 ライブラリにできない 3 つのこと。

以下はすべて、その上に載るコンポーネントではなく、Indy 層そのものの機能です。そのため、Indy ライブラリを入れ替えることで有効になります。

CLIENTHELLO ALPN の提示 h2 http/1.1 サーバーが選択 h2 ストリーム 1 ストリーム 3 ストリーム 5 HTTP/2 ストリーム TLS ハンドシェイクの中で、どの HTTP コンポーネントよりも下の層でネゴシエーションされます。
ALPN

HTTP/2 の土台となる拡張機能。

  • TLS ハンドシェイクの間に、クライアントが対応できるプロトコルを提示し、サーバーがその中からひとつを選びます。
  • このネゴシエーションは TLS 層の内部で行われ、HTTP コンポーネントからは手が届きません。
  • 標準の 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 アプリケーションは、クライアントコンポーネントでもサーバーコンポーネントでも、1 つのファイルとして配布できます。
  • カスタム Indy ライブラリを使用している場合にのみ有効で、Windows 32 ビットと 64 ビット、Delphi XE2 以降が対象です。
共存

すでにある Indy と並んで動作します。

IDE の Indy ライブラリを置き換える作業は誰もやりたくないものなので、このパックはそれを求めません。カスタム Indy のファイルには sgc プレフィックスが付き、IdGlobal は sgcIdGlobal になるため、両方のバージョンが問題なく共存します。

アンインストール不要

IDE にすでにある Indy は、インストールされたまま、登録されたまま残ります。パッケージを削除して後で復元したり、2 つの IDE プロファイルを使い分けたりする手順はありません。

既存のプロジェクトはそのまま

標準の Indy ライブラリに対してすでにビルドしているものは、バイト単位で同じユニットに対してそのままコンパイルされます。カスタムビルドは置き換えではなく、追加です。

コンパイラ定義はひとつだけ

カスタム Indy ライブラリを使うかどうかは、sgcVer.inc の SGC_CUSTOM_INDY で制御されます。カスタムビルドを再び無効にするのは 1 行の変更で済みます。

これまでどおりフルソース

名前を変更した Indy ユニットはライセンスにソースコードとして含まれるため、プロジェクトの設定でコンパイルでき、ライブラリの他の部分と同じようにデバッガーでステップ実行できます。

Delphi 7 でも Indy 10 のインストール不要

Delphi 7 には古い Indy が付属しています。カスタム Indy ライブラリが同梱されているため、Indy 10 を探したり、IDE にインストールしたり、コンポーネントとバージョンを合わせ続けたりする必要はありません。

Enterprise が使っているビルド

カスタム Indy ライブラリは新しいものではありません。sgcWebSockets Enterprise がこれまで基盤としてきたもので、このパックは sgcWebSockets Core からそれを利用するための手段です。

コード

ユニットはひとつ、配布するファイルもひとつ。

設定は不要です。たとえばメインの .dpr の uses 句に sgcIdSSLOpenSSL_Static を追加するだけで、次回の実行からアプリケーションは実行ファイルにリンクされた 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 を注文する際にワンクリックで追加でき、同じライセンスで提供されます。

Core と sgcCustomIndy

Enterprise が使っているものと同じカスタムビルドを、Core の注文時に追加します。フルソースコードと 1 年間のアップデートが付きます。

€149 / 開発者

sgcAuth と sgcHTTP に含まれます

sgcAuth の WebAuthn サポートと sgcHTTP の HTTP/2 および gRPC クライアントはこれを必要とするため、どちらのパックを注文しても sgcCustomIndy が必ず含まれます。パックの表示価格にすでに含まれています。

Enterprise と All-Access にはすでに含まれています

カスタム Indy ライブラリは sgcWebSockets Enterprise と eSeGeCe All-Access の一部で、デフォルトで有効です。どちらかをお持ちの場合、追加するものはありません。Standard と Professional は標準の Indy ライブラリを使用します。

IDE の Indy の代わりにインストールする完全な Indy パッケージである sgcIndy とは別のものです。必要なエディションを確認する

価格を見る

Indy 層を最新の状態に。

ALPN と HTTP/2、OpenSSL 1.1.1 と 3.x による TLS 1.3、そして Windows での実行ファイル内 OpenSSL。そのすべてを、すでにお使いの Indy と並べて利用できます。sgcWebSockets の体験版には、カスタム Indy を含む Enterprise の全機能が入っています。

ブログの最新記事

すべての記事を見る →

現在は eSeGeCe の sgcCustomIndy ビューを表示しています。

別の切り口を見る →
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る