Інтерфейс VPN, рушій GPL і інсталятор: що розповсюджується?
Складіть карту того, що розповсюджується, що було змінено і як частини взаємодіють, перш ніж вирішувати, як умови GPL і OpenSSL застосовуються до вашого пакета інтерфейсу VPN.
Питання приходить як ліцензійне, але відповідь починається з інвентаризації. Інтерфейс 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 разом з усім іншим.
Зберіть пакет доказів
Пакет має чотири частини: перелік файлів з версіями, опис інтеграції, список змін з різницями та тексти ліцензій у тому вигляді, в якому вони постачаються. Додайте файл повідомлень, який ви розповсюджуєте, і місце, де пропонується вихідний код, якщо ваші обов'язки вимагають пропозиції.
Тримайте пакет в одного власника, щоб жоден випуск не міг вийти без нього.
Ніщо з цього не вирішує юридичного питання, і в цьому суть: це дає кваліфікованому рецензенту факти замість резюме, зібраного з пам'яті. Маркетинговий опис постачальника не є доказом його архітектури, і ваш власний здогад про неї також не є доказом.