A pregunta chega como un asunto de licenzas, pero a resposta comeza por un inventario. Unha interface VPN, o motor OpenVPN que impulsa, unha biblioteca TLS e un instalador poden ter catro conxuntos distintos de condicións, e o aspecto do produto non lle di nada sobre que ficheiro pertence a que conxunto. Percorra os artefactos na orde en que se distribúen, e a cuestión legal vólvese moito máis estreita cando a entregue a alguén cualificado para respondela. Cada paso estreitáa máis: que se distribúe, que se cambiou e como se comunican as partes.

Comece polo que o instalador pon no disco

Tome o instalador ou paquete publicado, non unha copia de desenvolvemento, e enumere cada ficheiro que coloca nunha máquina limpa. Rexistre as versións da interface, o motor e a biblioteca TLS, e anote se o motor é un executábel separado ou unha biblioteca cargada no mesmo proceso.

Ese último dato determina todo o que segue. Un executábel separado lanzado por un socket expón un conxunto distinto de preguntas que o código compilado nun só binario, e un instalador que só coloca ambos un ao lado do outro non decide a cuestión en ningún sentido. A empaquetaxe é unha decisión de distribución, mentres que a relación entre os programas é arquitectónica.

Escriba a lista coas versións engadidas, porque as condicións cambian entre versións principais.

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

Separe a interface do motor

O ficheiro de copia de OpenVPN indica a versión 2 da GPL e documenta unha excepción de ligazón para OpenSSL, que é un permiso específico cun alcance definido e non unha licenza xeral para mesturar condicións.

Capture o texto da licenza que se distribúe coa súa compilación, non o que está hoxe no sitio web do proxecto. Unha publicación que fixou unha rama antiga leva o documento desa rama. As capturas de pantalla dunha páxina de repositorio non son un substituto, porque o ficheiro que necesita é o que está dentro do artefacto. Gárdeo xunto ao instalador para que o paquete estea completo.

Despois describa a integración con honestidade: a interface inicia o motor como proceso fillo e fala un protocolo de texto, ou liga unha biblioteca e intercambia estruturas internas? A segunda disposición é íntima dun xeito en que a primeira non o é, e esa distinción é o primeiro que preguntará un revisor.

Anote que ficheiros cambiou

O código fonte modificado cambia a análise máis que calquera detalle de empaquetaxe. Se parcheou o motor, o parche en si é obra derivada, e a obriga recae en quen distribúe o resultado.

Rexistre cada parche, o seu propósito e se se enviou ao proxecto orixinal, porque un parche que nunca saíu do seu repositorio segue formando parte do que distribúe se distribúe o binario.

Os ficheiros de configuración, os temas e as traducións adoitan vivir coa interface, pero unha tradución que incrusta cadeas do código do motor é un pequeno recordatorio de que o límite é por ficheiro e non por directorio. Manteña unha diferenza entre a publicación orixinal e a súa compilación para que a resposta estea dispoñible a petición en lugar de reconstruírse despois. Esa diferenza é tamén o artefacto máis útil cando un auditor pregunta que cambiou.

Comprobe a versión de OpenSSL por separado

OpenSSL 3.0 e posteriores distribúense baixo a licenza Apache 2.0, mentres que as versións anteriores levan as condicións OpenSSL/SSLeay. Son documentos diferentes con obrigas diferentes, e un motor empaquetado pode ligar o que atopase o seu sistema de compilación.

Confirme a versión realmente distribuída e non a indicada nun script de compilación.

Unha dependencia de OpenVPN non converte cada modificación de OpenSSL en código GPL, e a excepción de ligazón non elimina as demais obrigas que implica redistribuír a biblioteca. Trate a excepción como unha cláusula dentro dunha análise máis ampla, e rexistre os propios avisos da biblioteca TLS xunto con todo o demais.

Reúna o paquete de probas

O paquete ten catro partes: o inventario de ficheiros con versións, a descrición da integración, a lista de modificacións coas diferenzas e os textos de licenza tal como se distribúen. Engada o ficheiro de avisos que distribúe e o lugar onde se ofrece o código fonte, se as súas obrigas esixen unha oferta.

Manteña o paquete baixo un só responsable para que ningunha publicación poida saír sen el.

Nada diso decide unha cuestión legal, e esa é a idea: dá a un revisor cualificado os feitos en lugar dun resumo que alguén montou de memoria. A descrición de márketing dun provedor non é proba da súa arquitectura, e a súa propia conxectura sobre ela tampouco é proba.

Artigos relacionados