Питання приходить як ліцензійне, але відповідь починається з інвентаризації. Інтерфейс 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 разом з усім іншим.

Зберіть пакет доказів

Пакет має чотири частини: перелік файлів з версіями, опис інтеграції, список змін з різницями та тексти ліцензій у тому вигляді, в якому вони постачаються. Додайте файл повідомлень, який ви розповсюджуєте, і місце, де пропонується вихідний код, якщо ваші обов'язки вимагають пропозиції.

Тримайте пакет в одного власника, щоб жоден випуск не міг вийти без нього.

Ніщо з цього не вирішує юридичного питання, і в цьому суть: це дає кваліфікованому рецензенту факти замість резюме, зібраного з пам'яті. Маркетинговий опис постачальника не є доказом його архітектури, і ваш власний здогад про неї також не є доказом.

Схожі статті