Frågan kommer som en licensfråga, men svaret börjar med en förteckning. Ett VPN-gränssnitt, OpenVPN-motorn det styr, ett TLS-bibliotek och ett installationsprogram kan ha fyra olika uppsättningar villkor, och produktens utseende säger ingenting om vilken fil som hör till vilken uppsättning. Gå igenom artefakterna i den ordning de levereras, och den juridiska frågan blir mycket snävare när du överlämnar den till någon som är kvalificerad att svara. Varje steg snävar in den ytterligare: vad som distribueras, vad som ändrats och hur delarna kommunicerar.

Börja med det installationsprogrammet lägger på disken

Ta det utgivna installationsprogrammet eller paketet, inte en utvecklingskopia, och lista varje fil det placerar på en ren maskin. Registrera versioner för gränssnittet, motorn och TLS-biblioteket, och notera om motorn är en separat körbar fil eller ett bibliotek som laddas in i samma process.

Det sista faktumet formar allt som följer. En separat körbar fil som startas via en socket väcker en annan uppsättning frågor än kod som kompilerats till en enda binärfil, och ett installationsprogram som bara placerar båda sida vid sida avgör inte saken i någon riktning. Paketering är ett förpackningsbeslut, medan förhållandet mellan programmen är arkitektoniskt.

Skriv ned listan med versioner bifogade, eftersom villkoren skiljer sig mellan huvudutgåvor.

dpkg -L openvpn | head -n 40
openssl version -a

Separera gränssnittet från motorn

OpenVPNs kopieringsfil anger GPL version 2 och dokumenterar ett länkningsundantag för OpenSSL, vilket är ett specifikt tillstånd med definierad omfattning och inte en allmän licens att blanda villkor.

Fånga licenstexten som levereras med din build, inte den som finns på projektets webbplats i dag. En utgåva som fäste en äldre gren bär den grenens dokument. Skärmbilder av en förrådssida är inte en ersättning, eftersom filen du behöver är den inuti artefakten. Förvara den bredvid installationsprogrammet så att paketet är komplett.

Beskriv sedan integrationen ärligt: startar gränssnittet motorn som en underordnad process och talar ett textprotokoll, eller länkar det ett bibliotek och utbyter interna strukturer? Det andra arrangemanget är nära på ett sätt som det första inte är, och den skillnaden är det en granskare först kommer att fråga om.

Notera vilka filer du ändrade

Ändrad källkod ändrar analysen mer än någon paketeringsdetalj. Om du patchade motorn är patchen i sig ett härlett verk, och skyldigheten vilar på den som distribuerar resultatet.

Registrera varje patch, dess syfte och om den skickades uppströms, eftersom en patch som aldrig lämnade ditt förråd fortfarande är en del av det du levererar om du levererar binärfilen.

Konfigurationsfiler, teman och översättningar lever vanligtvis med gränssnittet, men en översättning som bäddar in motorns källkodssträngar är en liten påminnelse om att gränsen går per fil och inte per katalog. Håll en diff mellan uppströmsutgåvan och din build så att svaret finns tillgängligt på begäran i stället för att rekonstrueras senare. Den diffen är också den mest användbara artefakten när en granskare frågar vad som ändrats.

Kontrollera OpenSSL-versionen för sig

OpenSSL 3.0 och senare distribueras under Apache License 2.0, medan äldre utgåvor bär OpenSSL/SSLeay-villkoren. Det är olika dokument med olika skyldigheter, och en paketerad motor kan länka till vilken av dem som helst som ditt byggsystem hittade.

Bekräfta den version som faktiskt levereras och inte den som anges i ett byggskript.

Ett OpenVPN-beroende gör inte varje OpenSSL-ändring till GPL-kod, och länkningsundantaget tar inte bort de andra skyldigheter som följer med vidaredistribution av biblioteket. Behandla undantaget som en klausul i en större analys, och registrera TLS-bibliotekets egna meddelanden tillsammans med allt annat.

Sätt samman bevispaketet

Paketet har fyra delar: filförteckningen med versioner, beskrivningen av integrationen, listan över ändringar med diffar och licenstexterna så som de levereras. Lägg till meddelandefilen du distribuerar och platsen där källkoden erbjuds, om dina skyldigheter kräver ett erbjudande.

Håll paketet under en enda ägare så att ingen utgåva kan släppas utan det.

Inget av detta avgör en juridisk fråga, och det är poängen: det ger en kvalificerad granskare fakta i stället för en sammanfattning som någon satt ihop ur minnet. En leverantörs marknadsföringsbeskrivning är inte bevis för deras arkitektur, och din egen gissning om den är inte heller bevis.

Relaterade artiklar