O interfață VPN, un motor GPL și un instalator: ce se distribuie?
Cartografiați ce se distribuie, ce a fost modificat și cum comunică părțile înainte de a decide cum se aplică termenii GPL și OpenSSL pachetului dumneavoastră de interfață VPN.
Întrebarea vine ca o problemă de licențiere, dar răspunsul începe cu un inventar. O interfață VPN, motorul OpenVPN pe care îl conduce, o bibliotecă TLS și un instalator pot avea patru seturi diferite de termeni, iar aspectul produsului nu vă spune nimic despre ce fișier aparține cărui set. Parcurgeți artefactele în ordinea în care sunt distribuite, iar întrebarea juridică devine mult mai îngustă până când o predați cuiva calificat să răspundă. Fiecare pas o restrânge mai mult: ce se distribuie, ce a fost modificat și cum comunică părțile.
Începeți cu ceea ce instalatorul pune pe disc
Luați instalatorul sau pachetul publicat, nu o copie de dezvoltare, și enumerați fiecare fișier pe care îl plasează pe o mașină curată. Înregistrați versiunile pentru interfață, motor și biblioteca TLS și notați dacă motorul este un executabil separat sau o bibliotecă încărcată în același proces.
Acest ultim fapt modelează tot ce urmează. Un executabil separat lansat printr-un socket ridică un alt set de întrebări decât codul compilat într-un singur binar, iar un instalator care doar le plasează pe ambele alături nu decide problema în niciun sens. Împachetarea este o decizie de distribuire, în timp ce relația dintre programe este arhitecturală.
Scrieți lista cu versiunile atașate, pentru că termenii diferă între versiunile majore.
dpkg -L openvpn | head -n 40
openssl version -aSeparați interfața de motor
Fișierul de copiere al OpenVPN indică GPL versiunea 2 și documentează o excepție de legare pentru OpenSSL, care este o permisiune specifică cu un domeniu definit și nu o licență generală de amestecare a termenilor.
Capturați textul licenței distribuit cu compilarea dumneavoastră, nu cel de pe site-ul proiectului astăzi. O versiune care a fixat o ramură mai veche poartă documentul acelei ramuri. Capturile de ecran ale unei pagini de depozit nu sunt un substitut, pentru că fișierul de care aveți nevoie este cel din interiorul artefactului. Păstrați-l lângă instalator pentru ca pachetul să fie complet.
Apoi descrieți integrarea cu onestitate: interfața pornește motorul ca proces copil și vorbește un protocol text, sau leagă o bibliotecă și schimbă structuri interne? A doua aranjare este intimă într-un mod în care prima nu este, iar această distincție este primul lucru pe care îl va întreba un recenzent.
Notați ce fișiere ați modificat
Codul sursă modificat schimbă analiza mai mult decât orice detaliu de împachetare. Dacă ați aplicat un patch motorului, patch-ul în sine este operă derivată, iar obligația revine celui care distribuie rezultatul.
Înregistrați fiecare patch, scopul său și dacă a fost trimis în amonte, pentru că un patch care nu a părăsit niciodată depozitul dumneavoastră face parte în continuare din ceea ce distribuiți dacă distribuiți binarul.
Fișierele de configurare, temele și traducerile trăiesc de obicei cu interfața, dar o traducere care încorporează șiruri din codul sursă al motorului este o mică reamintire că granița este pe fișier, nu pe director. Păstrați o diferență între versiunea din amonte și compilarea dumneavoastră, astfel încât răspunsul să fie disponibil la cerere în loc să fie reconstruit mai târziu. Acea diferență este și cel mai util artefact atunci când un auditor întreabă ce s-a schimbat.
Verificați versiunea OpenSSL separat
OpenSSL 3.0 și versiunile ulterioare sunt distribuite sub Apache License 2.0, în timp ce versiunile mai vechi poartă termenii OpenSSL/SSLeay. Sunt documente diferite cu obligații diferite, iar un motor împachetat poate lega oricare dintre ele pe care l-a găsit sistemul dumneavoastră de compilare.
Confirmați versiunea distribuită efectiv, nu pe cea numită într-un script de compilare.
O dependență de OpenVPN nu transformă fiecare modificare a OpenSSL în cod GPL, iar excepția de legare nu elimină celelalte obligații care vin cu redistribuirea bibliotecii. Tratați excepția ca o clauză într-o analiză mai amplă și înregistrați propriile notificări ale bibliotecii TLS împreună cu tot restul.
Asamblați pachetul de dovezi
Pachetul are patru părți: inventarul fișierelor cu versiuni, descrierea integrării, lista modificărilor cu diferențe și textele licențelor așa cum sunt distribuite. Adăugați fișierul de notificări pe care îl distribuiți și locul unde este oferit codul sursă, dacă obligațiile dumneavoastră cer o ofertă.
Țineți pachetul sub un singur responsabil, astfel încât nicio versiune să nu poată ieși fără el.
Nimic din toate acestea nu decide o problemă juridică, și acesta este scopul: îi dă unui recenzent calificat faptele în locul unui rezumat alcătuit din memorie. Descrierea de marketing a unui furnizor nu este o dovadă a arhitecturii sale, iar propria dumneavoastră presupunere despre ea nu este nici ea o dovadă.