Een VPN-interface, een GPL-engine en een installatieprogramma: wat wordt er verspreid?
Breng in kaart wat er wordt verspreid, wat er is gewijzigd en hoe de onderdelen communiceren voordat u bepaalt hoe de GPL- en OpenSSL-voorwaarden van toepassing zijn op uw VPN-interfacebundel.
De vraag komt als een licentiekwestie binnen, maar het antwoord begint met een inventaris. Een VPN-interface, de OpenVPN-engine die zij aanstuurt, een TLS-bibliotheek en een installatieprogramma kunnen vier verschillende sets voorwaarden hebben, en het uiterlijk van het product zegt niets over welk bestand bij welke set hoort. Werk de artefacten door in de volgorde waarin ze worden verspreid, en de juridische vraag wordt veel smaller tegen de tijd dat u haar overdraagt aan iemand die bevoegd is om te antwoorden. Elke stap vernauwt haar verder: wat wordt verspreid, wat is er gewijzigd en hoe communiceren de onderdelen.
Begin met wat het installatieprogramma op de schijf zet
Neem het uitgebrachte installatieprogramma of pakket, geen ontwikkelkopie, en som elk bestand op dat het op een schone machine plaatst. Leg de versies vast van de interface, de engine en de TLS-bibliotheek, en noteer of de engine een apart uitvoerbaar bestand is of een bibliotheek die in hetzelfde proces wordt geladen.
Dat laatste gegeven bepaalt alles wat volgt. Een apart uitvoerbaar bestand dat via een socket wordt gestart, roept een andere reeks vragen op dan code die in één binair bestand is gecompileerd, en een installatieprogramma dat beide alleen naast elkaar zet, beslecht de kwestie in geen enkele richting. Bundeling is een verpakkingsbeslissing, terwijl de relatie tussen de programma's architectonisch is.
Schrijf de lijst op met de versies erbij, omdat de voorwaarden verschillen tussen hoofdreleases.
dpkg -L openvpn | head -n 40
openssl version -aScheid de interface van de engine
Het kopieerbestand van OpenVPN vermeldt GPL versie 2 en documenteert een linkuitzondering voor OpenSSL, wat een specifieke toestemming met een afgebakende reikwijdte is en geen algemene licentie om voorwaarden te mengen.
Leg de licentietekst vast die met uw build wordt verspreid, niet die van vandaag op de projectwebsite. Een release die een oudere branch vastzette, draagt het document van die branch met zich mee. Schermafbeeldingen van een repositorypagina zijn geen vervanging, omdat het bestand dat u nodig hebt het bestand in het artefact is. Bewaar het naast het installatieprogramma zodat het pakket compleet is.
Beschrijf daarna de integratie eerlijk: start de interface de engine als childproces en spreekt zij een tekstprotocol, of linkt zij een bibliotheek en wisselt zij interne structuren uit? De tweede opzet is nauw op een manier waarop de eerste dat niet is, en dat onderscheid is het eerste waar een beoordelaar naar zal vragen.
Noteer welke bestanden u hebt gewijzigd
Gewijzigde broncode verandert de analyse meer dan welk verpakkingsdetail dan ook. Als u de engine hebt gepatcht, is de patch zelf afgeleid werk, en de verplichting rust op wie het resultaat verspreidt.
Registreer elke patch, het doel ervan en of hij upstream is gestuurd, want een patch die uw repository nooit heeft verlaten, maakt nog steeds deel uit van wat u verspreidt als u het binaire bestand verspreidt.
Configuratiebestanden, thema's en vertalingen leven meestal bij de interface, maar een vertaling die bronstrings van de engine insluit, is een kleine herinnering dat de grens per bestand loopt en niet per map. Houd een diff bij tussen de upstream-release en uw build, zodat het antwoord op verzoek beschikbaar is in plaats van later te worden gereconstrueerd. Die diff is ook het nuttigste artefact wanneer een auditor vraagt wat er is veranderd.
Controleer de OpenSSL-versie apart
OpenSSL 3.0 en later worden verspreid onder de Apache-licentie 2.0, terwijl oudere releases de OpenSSL/SSLeay-voorwaarden dragen. Dat zijn verschillende documenten met verschillende verplichtingen, en een gebundelde engine kan degene linken die uw buildsysteem heeft gevonden.
Bevestig de versie die daadwerkelijk wordt verspreid en niet die in een buildscript wordt genoemd.
Een afhankelijkheid van OpenVPN maakt niet elke OpenSSL-wijziging tot GPL-code, en de linkuitzondering verwijdert niet de andere verplichtingen die met herdistributie van de bibliotheek gepaard gaan. Behandel de uitzondering als één clausule in een bredere analyse, en leg de eigen kennisgevingen van de TLS-bibliotheek samen met al het andere vast.
Stel het bewijspakket samen
Het pakket heeft vier delen: de bestandsinventaris met versies, de beschrijving van de integratie, de lijst met wijzigingen en diffs en de licentieteksten zoals verspreid. Voeg het kennisgevingsbestand dat u verspreidt toe en de plek waar de broncode wordt aangeboden, als uw verplichtingen een aanbod vereisen.
Houd het pakket onder één eigenaar zodat geen release zonder kan uitgaan.
Niets hiervan beslecht een juridische vraag, en dat is het punt: het geeft een bekwame beoordelaar de feiten in plaats van een samenvatting die iemand uit het geheugen heeft samengesteld. De marketingbeschrijving van een leverancier is geen bewijs over hun architectuur, en uw eigen vermoeden daarover is dat ook niet.