Një ndërfaqe VPN, një motor GPL dhe një instalues: çfarë shpërndahet?
Hartoni çfarë shpërndahet, çfarë u ndryshua dhe si komunikojnë pjesët, përpara se të vendosni si zbatohen kushtet e GPL dhe OpenSSL për paketën tuaj të ndërfaqes VPN.
Pyetja vjen si një çështje licencimi, por përgjigja fillon me një inventar. Një ndërfaqe VPN, motori OpenVPN që ajo drejton, një bibliotekë TLS dhe një instalues mund të kenë katër grupe të ndryshme kushtesh, dhe pamja e produktit nuk ju thotë asgjë se cili skedar i përket cilit grup. Përshkoni artefaktet sipas rendit në të cilin shpërndahen, dhe çështja ligjore bëhet shumë më e ngushtë kur t'ia dorëzoni dikujt të kualifikuar për t'u përgjigjur. Çdo hap e ngushton më tej: çfarë shpërndahet, çfarë u ndryshua dhe si komunikojnë pjesët.
Filloni me atë që instaluesi vendos në disk
Merrni instaluesin ose paketën e lëshuar, jo një kopje zhvillimi, dhe listoni çdo skedar që vendos në një makinë të pastër. Regjistroni versionet për ndërfaqen, motorin dhe bibliotekën TLS, dhe vini re nëse motori është një skedar i ekzekutueshëm i veçantë ose një bibliotekë e ngarkuar në të njëjtin proces.
Ky fakt i fundit formëson gjithçka që vijon. Një skedar i ekzekutueshëm i veçantë i nisur përmes një socket ngre një grup tjetër pyetjesh sesa kodi i kompiluar në një binar të vetëm, dhe një instalues që thjesht i vendos të dy krah për krah nuk e zgjidh çështjen në asnjë drejtim. Paketimi është një vendim paketimi, ndërsa marrëdhënia midis programeve është arkitekturore.
Shkruajeni listën me versionet bashkëngjitur, sepse kushtet ndryshojnë midis lëshimeve kryesore.
dpkg -L openvpn | head -n 40
openssl version -aNdani ndërfaqen nga motori
Skedari i kopjimit të OpenVPN deklaron GPL versionin 2 dhe dokumenton një përjashtim lidhjeje për OpenSSL, i cili është një leje specifike me shtrirje të përcaktuar dhe jo një licencë e përgjithshme për të përzier kushtet.
Kapni tekstin e licencës që shpërndahet me ndërtimin tuaj, jo atë që është sot në faqen e projektit. Një lëshim që fiksoi një degë më të vjetër mban dokumentin e asaj dege. Pamjet e ekranit të një faqe depoje nuk janë zëvendësim, sepse skedari që ju nevojitet është ai brenda artefaktit. Ruajeni pranë instaluesit që paketa të jetë e plotë.
Pastaj përshkruani integrimin me ndershmëri: a e nis ndërfaqja motorin si proces fëmijë dhe flet një protokoll teksti, apo lidh një bibliotekë dhe shkëmben struktura të brendshme? Rregullimi i dytë është i ngushtë në një mënyrë që i pari nuk është, dhe pikërisht kjo dallim është ajo që do të pyesë së pari një rishikues.
Vini re cilat skedarë ndryshuat
Kodi burimor i ndryshuar e ndryshon analizën më shumë se çdo detaj paketimi. Nëse e patchtë motorin, patch-i vetë është vepër e prejardhur, dhe detyrimi bie mbi atë që shpërndan rezultatin.
Regjistroni çdo patch, qëllimin e tij dhe nëse u dërgua në rrjedhën e sipërme, sepse një patch që nuk doli kurrë nga depoja juaj është ende pjesë e asaj që shpërndani nëse shpërndani binarin.
Skedarët e konfigurimit, temat dhe përkthimet zakonisht jetojnë me ndërfaqen, por një përkthim që përfshin vargje të kodit burimor të motorit është një kujtesë e vogël se kufiri është për skedar, jo për drejtori. Mbani një diferencë midis lëshimit të rrjedhës së sipërme dhe ndërtimit tuaj, që përgjigjja të jetë e disponueshme sipas kërkesës në vend që të rindërtohet më vonë. Ajo diferencë është gjithashtu artefakti më i dobishëm kur një auditues pyet çfarë ndryshoi.
Kontrolloni versionin e OpenSSL veçmas
OpenSSL 3.0 dhe më vonë shpërndahen sipas Apache License 2.0, ndërsa lëshimet më të vjetra mbajnë kushtet OpenSSL/SSLeay. Këto janë dokumente të ndryshme me detyrime të ndryshme, dhe një motor i paketuar mund të lidhë cilindo prej tyre që gjeti sistemi juaj i ndërtimit.
Konfirmoni versionin e shpërndarë në të vërtetë dhe jo atë të emërtuar në një skript ndërtimi.
Një varësi nga OpenVPN nuk e kthen çdo modifikim të OpenSSL në kod GPL, dhe përjashtimi i lidhjes nuk i heq detyrimet e tjera që vijnë me rishpërndarjen e bibliotekës. Trajtojeni përjashtimin si një klauzolë në një analizë më të gjerë, dhe regjistroni njoftimet e vetë bibliotekës TLS së bashku me gjithçka tjetër.
Mblidhni paketën e provave
Paketa ka katër pjesë: inventarin e skedarëve me versione, përshkrimin e integrimit, listën e modifikimeve me diferenca dhe tekstet e licencës siç shpërndahen. Shtoni skedarin e njoftimeve që shpërndani dhe vendin ku ofrohet kodi burimor, nëse detyrimet tuaja kërkojnë një ofertë.
Mbani paketën nën një pronar të vetëm, që asnjë lëshim të mos dalë pa të.
Asgjë nga kjo nuk vendos një çështje ligjore, dhe ky është qëllimi: i jep një rishikuesi të kualifikuar faktet në vend të një përmbledhjeje të mbledhur nga kujtesa. Përshkrimi i marketingut i një furnizuesi nuk është provë për arkitekturën e tij, dhe supozimi juaj për të gjithashtu nuk është provë.