’n VPN-koppelvlak, ’n GPL-enjin en ’n installeerder: wat word versend?
Karteer wat versprei word, wat verander is en hoe die onderdele met mekaar praat voordat jy besluit hoe GPL- en OpenSSL-voorwaardes op jou VPN-GUI-bondel van toepassing is.
Die vraag kom as ’n lisensievraag aan, maar die antwoord begin as ’n inventaris. ’n VPN-koppelvlak, die OpenVPN-enjin wat dit dryf, ’n TLS-biblioteek en ’n installeerder kan vier verskillende stelle voorwaardes hê, en die produk se voorkoms sê niks oor watter lêer aan watter stel behoort nie. Werk die artefakte deur in die volgorde waarin hulle versend word, en die regsvraag word baie nouer teen die tyd dat jy dit oorhandig aan iemand wat dit kan beantwoord. Elke stap vernou dit verder: wat versprei word, wat verander is en hoe die onderdele kommunikeer.
Begin met wat die installeerder op die skyf plaas
Neem die vrygestelde installeerder of pakket, nie ’n ontwikkelingskode nie, en lys elke lêer wat dit op ’n skoon masjien plaas. Teken weergawes aan vir die koppelvlak, die enjin en die TLS-biblioteek, en let op of die enjin ’n aparte uitvoerbare lêer of ’n biblioteek is wat in dieselfde proses gelaai word.
Daardie laaste feit bepaal alles wat volg. ’n Aparte uitvoerbare lêer wat oor ’n sokker begin word, laat ’n ander stel vrae ontstaan as kode wat in een binêre lêer saamgestel is, en ’n installeerder wat bloot albei langs mekaar plaas, beslis nie die saak in een of ander rigting nie. Bundeling is ’n verpakkingsbesluit, terwyl die verhouding tussen die programme ’n argitektoniese een is.
Skryf die lys neer met weergawes daarby, want voorwaardes verskil tussen hoofweergawes.
dpkg -L openvpn | head -n 40
openssl version -aSkei die koppelvlak van die enjin
Die OpenVPN-kopieerlêer noem GPL weergawe 2 en dokumenteer ’n skakeluitsondering vir OpenSSL, wat ’n spesifieke toestemming met ’n bepaalde omvang is eerder as ’n algemene lisensie om voorwaardes te vermeng.
Vang die lisensiesteun wat saam met jou bougoed versend word, nie dié op die projekwebwerf vandag nie. ’n Vrystelling wat ’n ouer tak vasgepen het, dra daardie tak se dokument saam. Skermskote van ’n bewaarplekbladsy is nie ’n plaasvervanger nie, want die lêer wat jy nodig het, is dié binne die artefak. Bêre dit langs die installeerder sodat die pakket volledig is.
Beskryf dan die integrasie eerlik: begin die koppelvlak die enjin as ’n kindproses en praat dit ’n teksprotokol, of koppel dit ’n biblioteek en ruil dit interne strukture uit? Die tweede reëling is intiem op ’n manier wat die eerste nie is nie, en dié onderskeid is waarna ’n keurder eerste sal vra.
Let op watter lêers jy verander het
Veranderde bronkode verander die ontleding meer as enige verpakkingsbesonderheid. As jy die enjin met ’n pleister verander het, is die pleister self afgeleide werk, en die verpligting rus op elkeen wat die resultaat versprei.
Teken elke pleister aan, die doel daarvan en of dit stroomop gestuur is, want ’n pleister wat nooit jou bewaarplek verlaat het nie, is steeds deel van wat jy versend as jy die binêre lêer versend.
Konfigurasielêers, temas en vertalings woon gewoonlik by die koppelvlak, maar ’n vertaling wat bronstringe van die enjin insluit, is ’n klein herinnering dat die grens per lêer eerder as per gids is. Hou ’n verskil tussen die stroomop-vrystelling en jou bougoed sodat die antwoord op aanvraag beskikbaar is eerder as om later gerekonstrueer te word. Daardie verskil is ook die nuttigste artefak wanneer ’n ouditeur vra wat verander het.
Kontroleer die OpenSSL-weergawe op sy eie
OpenSSL 3.0 en later word onder die Apache-lisensie 2.0 versprei, terwyl ouer vrystellings die OpenSSL/SSLeay-voorwaardes dra. Dit is verskillende dokumente met verskillende verpligtinge, en ’n gebundelde enjin kan enigeen koppel wat jou boustelsel gevind het.
Bevestig die weergawe wat werklik versend word eerder as dié wat in ’n bouprogram genoem word.
’n OpenVPN-afhanklikheid omskep nie elke OpenSSL-wysiging in GPL-kode nie, en die skakeluitsondering verwyder nie die ander verpligtinge wat met die herverspreiding van die biblioteek kom nie. Behandel die uitsondering as een klousule in ’n groter ontleding, en teken die TLS-biblioteek se eie kennisgewings saam met alles anders aan.
Stel die bewysmateriaalpakket saam
Die pakket het vier dele: die lêer-inventaris met weergawes, die integrasiebeskrywing, die lys wysigings met verskille, en die lisensiesteun soos versend. Voeg die kennisgewinglêer wat jy versprei en die plek waar bronkode aangebied word by, as jou verpligtinge ’n aanbod vereis.
Hou die pakket onder een eienaar sodat ’n vrystelling nie daarsonder kan versend nie.
Niks hiervan beslis ’n regsvraag nie, en dit is die punt: dit gee ’n gekwalifiseerde keurder die feite eerder as ’n opsomming wat iemand uit die geheue saamgestel het. ’n Verskaffer se bemarkingsbeskrywing is nie bewyse oor hulle argitektuur nie, en jou eie vermoede daaroor is ook nie bewyse nie.