Antarmuka VPN, mesin GPL, dan penginstal: apa yang didistribusikan?
Petakan apa yang didistribusikan, apa yang diubah, dan bagaimana bagian-bagiannya berkomunikasi sebelum memutuskan bagaimana ketentuan GPL dan OpenSSL berlaku pada paket antarmuka VPN Anda.
Pertanyaan datang sebagai soal lisensi, tetapi jawabannya dimulai dengan inventaris. Antarmuka VPN, mesin OpenVPN yang dijalankannya, pustaka TLS, dan penginstal dapat memiliki empat rangkaian ketentuan yang berbeda, dan tampilan produk tidak memberi tahu Anda berkas mana milik rangkaian mana. Telusuri artefaknya sesuai urutan distribusinya, dan pertanyaan hukumnya menjadi jauh lebih sempit saat Anda menyerahkannya kepada orang yang memenuhi syarat untuk menjawabnya. Setiap langkah mempersempitnya lebih jauh: apa yang didistribusikan, apa yang diubah, dan bagaimana bagian-bagiannya berkomunikasi.
Mulailah dari apa yang diletakkan penginstal di disk
Ambil penginstal atau paket yang dirilis, bukan salinan pengembangan, dan daftarkan setiap berkas yang diletakkannya di mesin bersih. Catat versi untuk antarmuka, mesin, dan pustaka TLS, lalu catat apakah mesin itu berkas yang dapat dieksekusi terpisah atau pustaka yang dimuat ke dalam proses yang sama.
Fakta terakhir itu membentuk semua yang berikutnya. Berkas yang dapat dieksekusi terpisah yang dijalankan melalui soket memunculkan rangkaian pertanyaan berbeda daripada kode yang dikompilasi menjadi satu biner, dan penginstal yang hanya menempatkan keduanya berdampingan tidak memutuskan soal itu ke arah mana pun. Pembundelan adalah keputusan pengemasan, sedangkan hubungan antara program-program itu bersifat arsitektural.
Tuliskan daftarnya beserta versinya, karena ketentuan berbeda antar rilis utama.
dpkg -L openvpn | head -n 40
openssl version -aPisahkan antarmuka dari mesin
Berkas salinan OpenVPN menyatakan GPL versi 2 dan mendokumentasikan pengecualian penautan untuk OpenSSL, yang merupakan izin khusus dengan cakupan tertentu, bukan lisensi umum untuk mencampur ketentuan.
Tangkap teks lisensi yang disertakan dengan build Anda, bukan yang ada di situs web proyek hari ini. Rilis yang menyematkan cabang lama membawa dokumen cabang tersebut. Tangkapan layar halaman repositori bukan pengganti, karena berkas yang Anda butuhkan adalah yang ada di dalam artefak. Simpan di samping penginstal agar paketnya lengkap.
Lalu jelaskan integrasinya dengan jujur: apakah antarmuka menjalankan mesin sebagai proses anak dan berbicara protokol teks, atau menautkan pustaka dan bertukar struktur internal? Susunan kedua itu erat dengan cara yang tidak dimiliki yang pertama, dan perbedaan itulah yang pertama kali ditanyakan peninjau.
Catat berkas mana yang Anda ubah
Kode sumber yang dimodifikasi mengubah analisis lebih banyak daripada detail pengemasan apa pun. Jika Anda menambal mesin, tambalan itu sendiri adalah karya turunan, dan kewajiban melekat pada siapa pun yang mendistribusikan hasilnya.
Catat setiap tambalan, tujuannya, dan apakah dikirim ke hulu, karena tambalan yang tidak pernah meninggalkan repositori Anda tetap bagian dari apa yang Anda distribusikan jika Anda mendistribusikan binernya.
Berkas konfigurasi, tema, dan terjemahan biasanya hidup bersama antarmuka, tetapi terjemahan yang menyematkan string kode sumber mesin adalah pengingat kecil bahwa batasnya per berkas, bukan per direktori. Simpan diff antara rilis hulu dan build Anda agar jawabannya tersedia saat diminta alih-alih direkonstruksi kemudian. Diff itu juga artefak paling berguna ketika auditor bertanya apa yang berubah.
Periksa versi OpenSSL sendiri
OpenSSL 3.0 dan yang lebih baru didistribusikan di bawah Apache License 2.0, sedangkan rilis lama membawa ketentuan OpenSSL/SSLeay. Itu adalah dokumen berbeda dengan kewajiban berbeda, dan mesin yang dibundel mungkin menautkan salah satu yang ditemukan sistem build Anda.
Konfirmasikan versi yang benar-benar didistribusikan, bukan yang disebutkan dalam skrip build.
Ketergantungan pada OpenVPN tidak mengubah setiap modifikasi OpenSSL menjadi kode GPL, dan pengecualian penautan tidak menghapus kewajiban lain yang menyertai pendistribusian ulang pustaka. Perlakukan pengecualian sebagai satu klausul dalam analisis yang lebih luas, dan catat pemberitahuan pustaka TLS itu sendiri bersama semua hal lain.
Susun paket bukti
Paket itu memiliki empat bagian: inventaris berkas dengan versi, deskripsi integrasi, daftar modifikasi dengan diff, dan teks lisensi sebagaimana didistribusikan. Tambahkan berkas pemberitahuan yang Anda distribusikan dan tempat kode sumber ditawarkan, jika kewajiban Anda memerlukan penawaran.
Jaga paket itu di bawah satu pemilik agar tidak ada rilis yang bisa keluar tanpanya.
Tidak ada satu pun dari ini yang memutuskan pertanyaan hukum, dan itulah intinya: ini memberi peninjau yang memenuhi syarat fakta alih-alih ringkasan yang disusun seseorang dari ingatan. Deskripsi pemasaran vendor bukan bukti tentang arsitektur mereka, dan dugaan Anda sendiri tentangnya juga bukan bukti.