VPN の GUI、GPL エンジン、インストーラー:何が配布されるのか
GPL と OpenSSL の条件が VPN GUI バンドルにどう適用されるかを決める前に、何が配布され、何が変更され、各部分がどう通信するかを整理します。
この問いはライセンスの問題として届きますが、答えは棚卸しから始まります。VPN のインターフェース、それが動かす OpenVPN エンジン、TLS ライブラリ、インストーラーは、それぞれ異なる四つの条件の集合を持ち得るうえ、製品の見た目からはどのファイルがどの集合に属するか分かりません。成果物を配布される順にたどっていけば、答えを出せる資格のある人に渡すころには、法的な問いはかなり狭くなっています。各段階は、何が配布され、何が変更され、各部分がどう通信するのかという点で、さらに絞り込みます。
インストーラーがディスクに置くものから始める
開発用のチェックアウトではなく、リリースされたインストーラーまたはパッケージを取得し、クリーンなマシンに置かれるすべてのファイルを一覧にします。インターフェース、エンジン、TLS ライブラリのバージョンを記録し、エンジンが別個の実行ファイルなのか、同じプロセスに読み込まれるライブラリなのかを書き留めます。
この最後の事実が、以後のすべてを形づくります。ソケット経由で起動する別個の実行ファイルは、単一のバイナリにコンパイルされたコードとは別の問いを生み、両方をただ並べるだけのインストーラーは、どちらの意味でも決着をつけません。同梱はパッケージングの決定であり、プログラム間の関係はアーキテクチャの決定です。
一覧は、条件がメジャーリリースごとに異なるため、バージョンとともに書き留めます。
dpkg -L openvpn | head -n 40
openssl version -aインターフェースとエンジンを分ける
OpenVPN のコピー条件ファイルは GPL バージョン 2 を明記し、OpenSSL に対するリンク例外を、範囲の定められた個別の許可であって条件を混ぜるための一般的なライセンスではないものとして記述しています。
プロジェクトのウェブサイトにある現在のものではなく、自分のビルドに同梱されるライセンス文を保存します。古いブランチを固定したリリースは、そのブランチの文書を伴います。リポジトリのページのスクリーンショットは、必要なファイルが成果物の中にある以上、代わりになりません。パッケージが完全になるよう、インストーラーのそばに保管します。
次に、インターフェースがエンジンを子プロセスとして起動してテキストプロトコルで話すのか、それともライブラリをリンクして内部構造をやり取りするのかという統合の実態を、正直に記述します。後者の構成は前者より密接であり、レビュアーが最初に尋ねるのはまさにこの違いです。
どのファイルを変更したかを書き留める
変更したソースコードは、どんなパッケージングの細部よりも分析を大きく変えます。エンジンにパッチを当てたなら、パッチ自体が派生著作物であり、義務はその結果を配布する者に及びます。
自分のリポジトリを一度も出ていないパッチも、バイナリを配布するなら配布物の一部になるため、各パッチ、その目的、上流に送ったかどうかを記録します。
設定ファイル、テーマ、翻訳は通常インターフェースとともに置かれますが、エンジンのソース文字列を埋め込む翻訳は、境界がディレクトリ単位ではなくファイル単位であることを思い出させます。上流のリリースと自分のビルドの差分を保ち、後から再構成するのではなく、求められればすぐ答えられるようにします。その差分は、監査人が何が変わったかを尋ねたときにもっとも役立つ成果物です。
OpenSSL のバージョンは別に確認する
OpenSSL 3.0 以降は Apache License 2.0 の下で配布され、古いリリースは OpenSSL/SSLeay の条件を伴います。これは異なる義務を持つ別の文書であり、同梱されたエンジンはビルドシステムが見つけたほうをリンクしている可能性があります。
ビルドスクリプトに書かれたものではなく、実際に配布されるバージョンを確認します。
OpenVPN への依存は、OpenSSL への変更のすべてを GPL コードに変えるわけではなく、リンク例外はライブラリを再配布する際の他の義務を取り除きません。例外はより大きな分析の中の一つの条項として扱い、TLS ライブラリ自身の通知もほかのすべてとあわせて記録します。
証拠の束をまとめる
束は、バージョン付きのファイル一覧、統合の説明、差分付きの変更一覧、配布されるとおりのライセンス文という四つの部分からなります。配布する通知ファイルと、義務が提供を求める場合はソースコードを提供する場所を加えます。
束は一人の管理下に置き、それなしではリリースが出せないようにします。
ここまでのどれも法的な問いを決めるものではありません。記憶から組み立てた要約ではなく、資格のあるレビュアーに事実を渡すことが要点であり、ベンダーのマーケティング上の説明もあなた自身の推測も、そのアーキテクチャの証拠にはなりません。