Code signing

0

Czy kto z Was podpisał może swoje oprogramowanie tym certyfikatem?
https://codesigning.ksoftware.net/index.html

Jeśli tak, to czy można prosić o link do podpisanego programu?

Stefan

1

No nie żartuj :-). Leje nie leje. Realia rynku są jakie są.
Jeśli możesz mi wystawić taki certyfikat, to może pomożesz w dystrybucji tego programu?
https://kombi.3n.com.pl ?
Wiesz jak zrobić, żeby inteligentny filtr Windowsa nie krzyczał i pozwolił spokojnie to zainstalować bez certyfikatu?
Albo wiesz jak zrobić, żeby dodać program do dużych baz oprogramowania, które wymagają, żeby program był podpisany cyfrowo?

Stefan

2

Niestety Panowie, ale takie certyfikaty są potrzebne. Wprawdzie jest to wyciąganie kasy od biednych developerów... ale co zrobić ;)

Rzućcie chociażby okiem na mój wpis w innym wątku - https://4programmers.net/Forum/1566772. Nie jest to "niszowy" (bez urazy) edytor DTP, ale wykorzystywane przez dziesiątki (a może setki, nie znam statystyk) tysięcy programistów środowisko IDE. Mimo tego Windows krzyczy, że to wirus, samo zło, grzybica, niebezpieczeństwo i wieczny ogień piekielny. Sytuacja podanego przez mnie IDE jest o tyle lepsza, że instalują je ludzie, którzy po pierwsze wiedzą, czego szukają, a po drugie (przynajmniej teoretycznie) mają większą wiedzę i świadomość odnośnie informatyki. Ale już widzę oczyma wyobraźni, jak przy wielu niezależnych i mało popularnych aplikacjach, użytkownik końcowy ściąga demo, a widząc ostrzeżenie Windowsa o niebezpieczeństwie, stwierdza że nie chce ryzykować i olewa temat. Każdy taki użytkownik to potencjalna strata dla producenta oprogramowania, zmarnowana szansa na sprzedaż licencji.

0

Dokładnie tak jest. Od dłuższego czasu szukam rozwiązania - i to co znalazłem wydaje się rozsądne (84$) na rok.
Ale zanim wydam te 84 dolce warto byłoby sprawdzić, czy to chociaż częściowo sprawę rozwiąże. Stąd pytanie - może ktoś próbował?

I drugi temat - właśnie koresponduję z firmą, która to wystawia i okazuje się, że nie tak łatwo udowodnić swoją tożsamość.
Czy ktoś ma jakieś doświadczenia w tym temacie? Jakie dokumenty i w jakiej formie przesłane (skany, pdf z CEIGD) rozwiązały problem?

A Ty - Cerrato - masz ten certyfikat?

Stefan

1

Ja nie mam/nie korzystam z certyfikatów, bo aplikacje które tworzylem dotychczas wdrażałem we własnym zakresie, więc okienka z ostrzeżeniami nie były problemem, ale w przypadku dystrybucji przez net, takie komunikaty są nie do przyjęcia.

W każdym razie podoba mi się Twój wątek i sam jestem ciekawy, co ludziki tutaj napiszą :)

1

Wiesz jak zrobić, żeby inteligentny filtr Windowsa nie krzyczał i pozwolił spokojnie to zainstalować bez certyfikatu?

Jak dużo ludzi zacznie ściągać i instalować to nic nie będzie "krzyczało". I to mam wrażenie, że niezależnie od certyfikatu, bo jeżeli to nie jest certyfikat CA, które jest częścią Windows Trusted Root to i tak SmartScreen musi zbudować "reputację" dla danego pliku. Z tego co piszą w Internecie, niby potrzebny jest certyfikat typu EV, aby od razu zbudowała się "pozytywna" reputacja.

https://www.digicert.com/blog/ms-smartscreen-application-reputation/
https://security.stackexchange.com/a/139520

1

Temat dość gruntownie przebadałem, zanim tu napisałem. Przeprowadziłem też wiele testów. Są dostępne programy makecert i signtool, za pomocą których można sobie generować certyfikaty (jak napisał MasterO). I potem można sobie pobadać jak to się zachowuje.
Zainteresowałem się też inicjatywą http://www.cacert.org/ i wymieniłem się korespondencją z kilkoma osobami.

Tylko SmartScreen się wyłączy po uzyskaniu "reputacji" (ale nie wiadomo kiedy).
Bez certyfikatu nadal po uruchomieniu Instalatora będzie żółty komunikat.
No i żaden większy sklep nie przyjmie oprogramowania nie podpisanego.
Tego nie da się "obejść", to trzeba "rozwiązać".

0

Cyfrowe certyfikaty to pic na wodę, stosuję je od wielu lat tylko z tego względu, żeby przeglądarki łagodniej spoglądały na downloady (np. instalatorów).

Nie mają one absolutnie żadnego znaczenia dla oprogramowania antywirusowego, mimo, że ktoś mógłby tak pomyśleć. Dlaczego? Weryfikacja certyfikatu za długo trwa.

Kilka wyjątków to drivery i aplikacje wymagające uprawnień administracyjnych.

0

@Stefan_3N napisał "Temat dość gruntownie przebadałem, zanim tu napisałem". To może byś się podzielił tym, co udało Ci się ustalić podczas tych gruntownych poszukiwań? :P

0

Raczej nie chciałem dyskutować o sensowności tego rozwiązania, a o tym jak je wdrożyć (co i gdzie kupić, jak przebiega proces weryfikacji).
Więc może - jak ktoś wie (kupił, przeszedł proces weryfikacji), to niech napisze (jeśli może) jak to wygląda.

Czy nie "mają absolutnie żadnego znaczenia..."?
Znaczenie jest proste. Jeśli w paczce jest wirus, tzn. że ja go tam umieściłem, a nie, że coś się w drodze przykleiło. I o to tu chodzi.

2

Sprawdzałem na Win10.
W systemie jest przystawka (start->uruchom->certmgr.msc)
W tej przystawce widzimy zainstalowane certyfikaty i poprzez nią będziemy mogli usuwać, to co ewentualne dalej naprodukujemy.

W pakiecie Visual Studio są dwa programy:
makecert.exe i signtool.exe

U mnie znajdują się one w katalogu:
C:\Program Files (x86)\Windows Kits\8.1\bin\x64

Składnia wywołań jest opisana tu:
https://docs.microsoft.com/en-us/windows/desktop/seccrypto/makecert
https://docs.microsoft.com/en-us/windows/desktop/seccrypto/signtool

Zaczynamy od utworzenia własnego certyfikatu.
Jeśli odpalamy te programy z cmd.exe, to cmd.exe trzeba uruchomić z prawami administratora.

Moja firma nazywa się 3n, więc wszędzie w przykładach gdzie jest 3n, trzeba wpisać coś swojego.
Najprostsze wywołanie może być np. takie
Makecert -n "CN=3N" -a sha512 -r -pe -ss 3n D:\3n.cer

To wywołanie utworzy na dysku d w katalogu głównym plik 3n.cer
Można kliknąć ten plik i zobaczyć certyfikat.
W przystawce automatycznie zostanie utworzona nowa gałąź (w tym przykładzie - o nazwie 3n).
W niej znajduje się ten certyfikat.

Idziemy dalej. Próba uruchomienia instalatora pobranego z internetu (np. z mojej witryny) powodowała wyświetlenie ekranu "SmartScreen".
Teraz już się tak nie dzieje (przynajmniej u mnie nie ma już takiego ostrzeżenia).
(przy okazji - jeśli ktoś może to sprawdzić u siebie, to byłbym wdzięczny - plik https://kombi.3n.com.pl/get_file.php?name=ftp/kombi_9_02B_.exe)

Ale dla innego pliku (pobieranego rzadziej) - to ostrzeżenie nadal (u mnie) jest. Zmiana nazwy (lub lokalizacji) tego pliku niczego nie zmienia.
Załóżmy, że to jest plik D:\setup.exe
Mogę go podpisać tym wygenerowanym wcześniej certyfikatem:
signtool sign /fd sha512 /s 3n D:\setup.exe
(3n w wierszu polecenia mówi, którego certyfikatu użyć).

Po wykonaniu tego polecenia plik jest podpisany. Można kliknąć prawym w niego i z właściwości wybrać "Podpisy cyfrowe". Widzimy nasz certyfikat.
Próba uruchomienia pliku na tym etapie niczego nie zmienia - nadal jest niebieskie ostrzeżenie "SmartScreen" i uwaga - informacja jest o "nieznanym wydawcy".

Dalsze zachowanie zależy od tego, czy plik wymaga uprawnień administratora, czy nie. Jeśli nie - to po zaakceptowaniu "SmartScreen" plik się już uruchamia bez żadnych ostrzeżeń.
Jeśli program wymaga uprawnień Administratora, to wyświetlany jest komunikat z żółtym tłem i informacja o "nieznanym wydawcy".

Jeśli teraz klikniemy prawym w plik -> właściwości -> Podpisy cyfrowe -> szczegóły -> Wyświetl -> Zainstaluj ->Otworzy się kreator importu.
Teraz Bieżący użytkownik -> Umieść w następującym magazynie -> Przeglądaj -> Zaufane główne urzędy certyfikacji -> Ok -> Dalej -> Zakończ.
Otworzy się komunikat ostrzegający -> Tak. Mamy zainstalowany nasz certyfikat.

I teraz próba odpalenia Setup.exe wyświetla niebieski komunikat z informacją "Zweryfikowany przez: 3N" i jest ikona pliku (wcześniej nie było).

Jeśli zajrzymy do przystawki certmgr.msc, to w "Zaufane główne urzędy certyfikacji" znajdziemy oczywiście nasz certyfikat.
Teraz tak spreparowany plik (setup.exe) umieszczam na serwerze i go pobieram.
I co? SmartScreen ostrzega nadal, ale - uwaga - teraz jest napisane "Wydawca: 3N". Oczywiście po zaakceptowaniu plik się uruchamia i jest niebieskie (bezpieczne) tło i wydawca znany.

A więc są tu dwa odrębne problemy:

  1. SmartScreen - który rządzi się swoimi prawami.
  2. Uruchamianie programów z prawami administratora.

Więcej na temat makecert i signtool jest napisane w tym artykule:
https://blog.jayway.com/2014/09/03/creating-self-signed-certificates-with-makecert-exe-for-development/

Teraz jeśli chodzi o certyfikaty - to na moim forum firmowym była krótka dyskusja:
https://3n.com.pl/topic/3n/forum/ths-thread4.1.2/thn-thread4_1_2
Tam wspominam o artykule na stronie MS.
To jest link do tego artykułu:
https://blogs.msdn.microsoft.com/ie/2012/08/14/microsoft-smartscreen-extended-validation-ev-code-signing-certificates/

Tu jeszcze inne artykuły na ten temat:
https://support.ksoftware.net/support/solutions/articles/232500-what-are-the-differences-between-ov-and-ev-level-code-signing-certificates-
https://ksoftware.freshdesk.com/support/solutions/articles/215894-what-is-this-file-is-not-commonly-downloaded-and-could-harm-your-computer-message-smartscreen-

Podsumowując:

  1. Certyfikat EV (rozszerzony i droższy) zdejmuje wszystkie ostrzeżenia.
  2. Certyfikat OV (tańszy) zadziała od ręki tylko na problem nr 2. Ale na pewno pomoże w zdobywaniu reputacji i rozwiązaniu problemu nr 1.
  3. Nie jestem pewien, ale zakładam, że certyfikat OV rozwiąże też punkt 2B w tym regulaminie:
    https://hello.softonic.com/software-policy/

Teraz jeśli chodzi o zakupy, to:

  1. Startcom (o którym pisze Bartosz) zamknięto 1.01.2018. Spadkobiercą jest WoSign
    https://www.wosign.com/english/WoSign_Kernel_CodeSigning.htm
    Najtańszy certyfikat - to 2888 RMB, czyli 1632 PLN (chyba że źle szukam).

  2. W Polsce jest Certum i sprzedaje tanie certyfikaty, ale dla projektów OpenSource.
    Dla zwykłych projektów komercyjnych - cena jest 549 plus VAT

  3. Ceny na świecie za zwykły (OV) to około 60-200$ (dużo zależy czy się kupuje na rok, czy od razu na kilka lat).

  4. W tej chwili jest promocja (pewno stała :-) i w Comodo można kupić za 85$ na rok:
    https://comodosslstore.com/codesigning.aspx

  5. To samo jest o dolar taniej tu:
    https://codesigning.ksoftware.net
    ale dają dodatkowo dedykowany program do automatycznego podpisywania wszystkich plików w katalogu.
    To oczywiście nie jest problem, ale jednak jak jest kilkadziesiąt plików, to albo ręcznie wklepywać (po każdej aktualizacji), albo napisać własny wsadowy.
    W każdym razie ten ich program działa (sprawdziłem) i wymaga pliku z rozszerzeniem pfx.

Plik pfx można zrobić programem pvk2pfx.exe (który jest tam, gdzie makecert).
pvk2pfx.exe wymaga klucza i certyfikatu. Certyfikat otrzymamy w momencie zakupu, klucz jest u nas. Trzeba to połączyć w jeden plik właśnie programem pvk2pfx.exe

Przykładowe polecenia wyglądałyby następująco:

makecert.exe -n "CN=3N" -r -pe -a sha512 -len 4096 -cy 3N -sv D:\3N.pvk D:\3N.cer
pvk2pfx.exe -pvk D:\3N.pvk -spc D:\3N.cer -pfx D:\3N.pfx -po HASLO

Pierwsze polecenie tworzy ceryfikat 3N.cer i klucz 3N.pvk
Drugie łączy klucz i certyfikat w jeden plik
HASŁO wpisujemy w tym programie do wsadowego przetwarzania, który jest do pobrania ze strony https://codesigning.ksoftware.net

  1. Korespondowałem z Comodo jak wygląda proces uwierzytelnienia i wygląda tak, że trzeba im przedstawić jakiś dokument urzędowy z telefonem.
    Dałem im link do naszego CEIGD z moim numerem NIP. Tam jest wersja anglojęzyczna. Weszli sobie i zobaczyli.
    Odpisali, że jest ok, ale muszę do tego rejestru wprowadzić numer telefonu (jest pole na telefon, ale puste).
    Zapytałem co dalej, czy będą dzwonić, czy co? Na razie nie odpisali, czekam na odpowiedź.

  2. Jeśli chodzi o http://www.cacert.org, to po zarejestrowaniu się mogłem dopiero przeczytać ich zasady.
    Zasady są takie, że trzeba zebrać odpowiednią liczbę punktów (coś na zasadzie reputacji tu na forum), aby dostać prawo wystawiania certyfikatów.
    Punkty zdobywa się poprzez osobiste spotkanie się z inną osobą i przedstawienie do wglądu dwóch dokumentów ze zdjęciem.
    Na stronie jest wyszukiwarka po odległościach. Wpisujemy gdzie mieszkamy i podajemy promień (np. 150 km).
    Zostaną wyświetlone meile do osób, które mogą nam takie punkty przydzielić. Liczba punktów możliwych do uzyskania od jednej osoby - to 10 do 30 w zależności od stażu tej drugiej osoby.
    Musimy zebrać (z tego co pamiętam) - 100 pkt. Po zebraniu tych punktów dostajemy prawo wystawiana certyfikatów i sami zostajemy wciągnięci na listę i możemy potwierdzać inne osoby.
    Napisałem kilka listów do osób z okolicy i odzew był taki sobie. Co prawda miałem odpowiedzi i tak - po pojechaniu potwierdziliby moją tożsamość. Ale już na pytania czy mogliby podpisać jakiś (swój program) i go wystawić w sieci - nie uzyskałem odpowiedzi pozytywnej.
    Więc nie wiem, czy to by zadziałało, dlatego dałem sobie spokój, bo musiałbym trochę pojeździć.

To chyba wszystko co udało mi się zebrać w tej materii.

Stefan

0
Bartosz Wójcik napisał(a):

Kilka wyjątków to drivery i aplikacje wymagające uprawnień administracyjnych.

Przecież każdy Instalator wymaga uprawnień administracyjnych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1