Darmowe podpisywanie kodu dla open source: nasz wniosek do SignPath 🔏
Każdy, kto instaluje naszą grę na Windows, może znać ten moment: „System Windows ochronił ten komputer” — SmartScreen ostrzega przed „nieznanym wydawcą” i trzeba najpierw kliknąć „Więcej informacji → Uruchom mimo to”. To nie wirus; po prostu nasze instalatory nie są jeszcze podpisane. Chcemy, żeby to ostrzeżenie zniknęło — bez kupowania drogiego certyfikatu.
Problem z certyfikatami do podpisywania kodu. Certyfikat wydawcy dla Windows (OV albo EV) kosztuje co roku, często wymaga weryfikacji firmy i sprzętowego tokena. Dla komercyjnego studia to jedna pozycja z wielu. Dla rodzinnego projektu open source to prawdziwa przeszkoda — i to jakby nie na miejscu: my jesteśmy przejrzyści, cały kod źródłowy jest publiczny.
Rozwiązanie: SignPath Foundation. SignPath przyznaje darmowe podpisywanie kodu projektom open source. Właśnie o to teraz wystąpiliśmy. Nic jeszcze nie jest zatwierdzone — weryfikacja trwa — ale przygotowania były na tyle pouczające, że warto się nimi podzielić. Jeśli chcecie podpisywać własny projekt OSS, oto co musieliśmy zrobić.
1. Wymagania wstępne. Publiczne repozytorium, uznana licencja OSI (u nas AGPL-3.0), opublikowane wydania z widocznym, aktywnym rozwojem i dokumentacją — oraz, bez żadnych wyjątków: uwierzytelnianie dwuskładnikowe na koncie GitHub. Pomaga też trochę renomy projektu: strona internetowa, filmy, kilka gwiazdek.
2. Polityka podpisywania kodu (najważniejsza część). SignPath chce dokładnie wiedzieć, jak podpisywanie wygląda w waszym projekcie. Dodaliśmy więc do repozytorium plik CODE_SIGNING.md, który opisuje: które repozytorium jest oficjalne, które artefakty są podpisywane, że podpisuje wyłącznie workflow wydań w CI (nigdy lokalny build na czyimś laptopie), kto zatwierdza wydania — oraz link do polityki prywatności. Ten punkt to serce wniosku.
3. Strona pobierania musi wspominać SignPath. Formularz pyta o „adres URL pobierania”, który odwołuje się do SignPath. Przepisaliśmy w tym celu uwagę o bezpieczeństwie w naszym README. Zależało nam na uczciwości: dopóki nic nie jest podpisane, wyraźnie piszemy, że podpisywanie jest dopiero w trakcie przygotowania — żadnych obietnic, które jeszcze nie są prawdą.
4. Prawdziwa polityka prywatności. Jeśli wasze oprogramowanie przetwarza dane — u nas to raporty o awariach i konta graczy — potrzebujecie prawdziwej polityki prywatności zgodnej z RODO, a nie zaślepki z kreatora stron.
5. Wysłanie. Wypełnijcie formularz (repozytorium, strona główna, adresy pobierania i prywatności, jedno zdanie o projekcie, renoma, system budowania = GitHub Actions), zaznaczcie wymagane pola i wyślijcie.
Teraz czekamy: weryfikacja jest ręczna, zwykle trwa od jednego do dwóch tygodni, możliwe są też dodatkowe pytania. Jeśli wniosek zostanie przyjęty, wepniemy krok podpisywania w nasz pipeline CI — i wtedy ostrzeżenie SmartScreen zniknie dla każdego, kto pobierze grę. Gdy tylko dostaniemy odpowiedź, w części 2 opiszemy konkretną integrację z CI.
Trzymajcie kciuki. 🤞
Komentarze