Jak ubiegać się o certyfikat podpisywania kodu i korzystać z niego w ServBay
Przegląd
Podpisywanie kodu to kluczowy krok w procesie tworzenia i dystrybucji oprogramowania, który zapewnia użytkownikom bezpieczeństwo i integralność aplikacji. Cyfrowy podpis kodu pozwala deweloperowi potwierdzić źródło oprogramowania oraz zapewnić, że od momentu podpisania kod nie został zmieniony.
ServBay oferuje wygodny mechanizm, dzięki któremu deweloperzy mogą ubiegać się o certyfikat podpisywania kodu wydany przez wewnętrzne CA ServBay bezpośrednio w swoim lokalnym środowisku. Te certyfikaty są szczególnie przydatne do:
- Podpisywania oprogramowania podczas lokalnego rozwoju lub testowania – symulowanie procesu podpisywania produkcyjnego.
- Podpisywania skryptów, narzędzi lub aplikacji przeznaczonych do użytku wewnętrznego, aby zespół mógł zweryfikować ich pochodzenie i integralność.
- Nauki i ćwiczenia procesu podpisywania kodu – bez ponoszenia kosztów zakupu komercyjnych certyfikatów.
Ważna informacja: Certyfikaty podpisywania kodu wydane przez wewnętrzne CA ServBay nie są certyfikatami od publicznie zaufanych centrów certyfikacji (takich jak Let's Encrypt, Comodo itp.). Te certyfikaty nie są domyślnie uznawane przez systemy operacyjne czy przeglądarki. Dlatego nie nadają się do zastosowań wymagających powszechnego zaufania, np. komercyjnej dystrybucji oprogramowania (końcowym użytkownikom), publikacji w app store, ani do przechodzenia przez sprawdzanie bezpieczeństwa systemów (np. ostrzeżenia Gatekeeper na macOS dotyczące nieznanych deweloperów). Certyfikaty ServBay przeznaczone są do zastosowań lokalnych, testowych lub w kontrolowanym środowisku.
Wprowadzenie do certyfikatów podpisywania kodu
Certyfikat podpisywania kodu to cyfrowy certyfikat, za pomocą którego można podpisać kod wykonywalny, skrypty, biblioteki i inne pliki oprogramowania. Jego główne funkcje to budowanie zaufania i ochrona bezpieczeństwa:
- Weryfikacja tożsamości wydawcy: Certyfikat zawiera informacje identyfikujące dewelopera lub organizację. Podpis cyfrowy potwierdza, że oprogramowanie faktycznie pochodzi od podmiotu wskazanego w certyfikacie.
- Zabezpieczanie integralności kodu: Podczas podpisywania generowany jest skrót (hash) kodu, który zostaje zaszyfrowany kluczem prywatnym. Podczas weryfikacji system ponownie oblicza hash pliku i porównuje go z odszyfrowanym podpisem. Każda modyfikacja kodu powoduje błąd weryfikacji podpisu i informuje o ewentualnej ingerencji.
- Zwiększenie zaufania użytkowników: Systemy operacyjne i oprogramowanie zabezpieczające zwykle ostrzegają użytkownika przed niesygnowanym lub nieznanym oprogramowaniem. Poprzez podpisanie kodu zaufanym certyfikatem (lub po ręcznym dodaniu CA ServBay do łańcucha zaufania), można uniknąć tych ostrzeżeń, zwiększając szansę na instalację i użycie aplikacji.
- Zapobieganie rozprzestrzenianiu się złośliwego oprogramowania: Podpis cyfrowy pozwala użytkownikom łatwo rozpoznać legalne oprogramowanie i odróżnić je od niebezpiecznych podróbek, co ogranicza ryzyko infekcji.
Jak ubiegać się o certyfikat podpisywania kodu w ServBay
ServBay znacząco upraszcza proces pozyskiwania certyfikatu podpisywania kodu w środowisku lokalnym.
Otwórz panel zarządzania certyfikatami SSL: W aplikacji ServBay kliknij w menu bocznym pozycję „SSL Certificates”.
Złóż wniosek o nowy certyfikat: Na stronie zarządzania certyfikatami SSL kliknij przycisk "+" (Dodaj) w prawym górnym rogu.
Wypełnij dane certyfikatu: W formularzu „Request Certificate” należy uzupełnić następujące dane:
- Common Name (nazwa ogólna): Podaj nazwę organizacji lub imię i nazwisko. Przykład:
ServBay, LLC
lubServBay Demo Developer
. - Usage Purpose (przeznaczenie): Wybierz cel użycia certyfikatu – wybierz
Code Signing
(podpisywanie kodu). - Request Method (metoda uzyskania): Sposób wydania certyfikatu – wybierz
ServBay CA
, czyli korzystanie z wbudowanego CA ServBay. - Issuer (wydawca): Wskaż wewnętrzne CA ServBay, które ma wydać certyfikat, najczęściej będzie to
ServBay User CA
. - Algorithm (algorytm): Algorytm kryptograficzny używany do generowania kluczy – do wyboru
ECC
(krzywe eliptyczne) lubRSA
(Rivest-Shamir-Adleman). ECC zwykle zapewnia wyższe bezpieczeństwo przy krótszych kluczach. - Key Length (długość klucza): Wybierz długość klucza odpowiednią do wybranego algorytmu. Dla ECC np.
384
, dla RSA:2048
lub4096
. Dłuższe klucze są bezpieczniejsze, ale mogą być nieco wolniejsze w użyciu. - Password (hasło): Bardzo ważne! Ustaw silne hasło chroniące klucz prywatny certyfikatu. Hasło to będzie niezbędne podczas eksportowania certyfikatu (
.p12
) i używania go w narzędziach do podpisywania kodu. Zapamiętaj je – ServBay nie ma możliwości odzyskania zgubionego hasła do klucza. Wybierz bezpieczne, własne hasło! (Uwaga: przykładServBay.dev
na zrzucie ekranu to słabe hasło użyte wyłącznie do ilustracji; w praktyce użyj silnego i unikalnego hasła.)
Zrzut ekranu poglądowy – dostosuj wpisy do swoich danych
- Common Name (nazwa ogólna): Podaj nazwę organizacji lub imię i nazwisko. Przykład:
Złóż wniosek o certyfikat: Po weryfikacji poprawności danych kliknij "Request" na dole formularza. ServBay automatycznie wygeneruje i wyda certyfikat podpisywania kodu wykorzystując wybrane CA.
Eksport i użycie certyfikatu
Po pozytywnym uzyskaniu certyfikatu podpisywania kodu należy wyeksportować go w standardowym formacie do użycia w narzędziach do podpisywania kodu. ServBay pozwala na eksport w formacie .p12
.
Wejdź do panelu certyfikatów SSL: Z menu bocznego ServBay wybierz „SSL Certificates”.
Znajdź swój certyfikat podpisywania kodu: Wyszukaj certyfikat o przeznaczeniu „Code Signing”, który przed chwilą został wygenerowany.
Kliknij przycisk eksportu: Kliknij ikonę eksportu przy odpowiednim certyfikacie (zwykle strzałka w prawo).
Wybierz katalog docelowy i podaj hasło: W okienku eksportu wskaż lokalizację zapisu pliku. Format pliku to zazwyczaj
.p12
(PKCS#12) – zawiera zarówno certyfikat, jak i klucz prywatny, dlatego zabezpieczony jest hasłem. Aby dokończyć eksport, wprowadź wcześniej ustalone hasło.Użyj certyfikatu w narzędziach do podpisywania kodu: Zaimportuj wyeksportowany plik
.p12
do odpowiedniego narzędzia, zależnie od środowiska:- macOS: Użyj narzędzia linii poleceń
codesign
. Najpierw zaimportuj.p12
do Keychain Access. - Windows: Skorzystaj z
signtool.exe
(jest częścią Windows SDK). Najpierw zaimportuj certyfikat do menedżera certyfikatów systemu Windows. - Inne platformy/narzędzia: W zależności od stacku (np.
jarsigner
dla Java,SignTool
dla .NET, zewnętrzne narzędzia dla Go) postępuj zgodnie z zaleceniami – zwykle wymagane są ścieżka do pliku.p12
i hasło.
- macOS: Użyj narzędzia linii poleceń
Po zaimportowaniu certyfikatu możesz cyfrowo podpisywać swój kod, aplikacje, sterowniki i inne pliki.
Przykład podpisywania kodu z wykorzystaniem certyfikatu (macOS)
Poniżej znajduje się przykład użycia narzędzia codesign
na macOS oraz certyfikatu .p12
wyeksportowanego z ServBay do podpisania i weryfikacji prostego pliku binarnego.
Załóżmy, że certyfikat .p12
jest już zaimportowany do macOS Keychain, a hasło zostało poprawnie podane.
bash
# 1. Utwórz prosty plik źródłowy C do testowania podpisu
# Zapisz poniższą zawartość jako test.c
cat <<EOF > test.c
#include <stdio.h>
int main() {
printf("Hello, ServBay Code Signing!\n");
return 0;
}
EOF
# 2. Skompiluj plik C do pliku binarnego
# -o /tmp/test ustawia nazwę wyjściową pliku na /tmp/test
gcc test.c -o /tmp/test
echo "Kompilacja zakończona sukcesem – plik /tmp/test gotowy"
# 3. Wyszukaj tożsamości dostępne do podpisywania kodu
# -v pokazuje szczegóły
# -p codesigning filtruje certyfikaty nadające się do podpisywania kodu
# Znajdź swój certyfikat po „Common Name” lub hash (np. 99C183BC3796067FAFBA6F232D1C3C3425DAABDA)
security find-identity -v -p codesigning
# Przykładowe wyjście:
# 1) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Apple Development: Your Name (XYZ123)"
# 2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay Demo Developer"
# 2 valid identities found
# Zanotuj hash lub nazwę odpowiadające certyfikatowi ServBay ("ServBay Demo Developer")
# 4. Podpisz plik binarny wybranym certyfikatem
# -f wymusza podpisanie (zastępuje istniejący podpis)
# -s określa tożsamość – hash lub Common Name (jeśli unikalne)
# --timestamp dodaje znacznik czasu (zalecane, pozwala zachować ważność podpisu po wygaśnięciu certyfikatu)
# /tmp/test to ścieżka pliku do podpisania
codesign -f -s "ServBay Demo Developer" --timestamp /tmp/test
# Lub przy użyciu hash:
# codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test
echo "/tmp/test został podpisany certyfikatem"
# 5. Sprawdź poprawność podpisu
# -dvvv wyświetla szczegółowe informacje
codesign -dvvv /tmp/test
# Sprawdź pole „Authority” – powinny być tam dane certyfikatu i łańcuch CA ServBay
# Skontroluj „Signature size”, „CDHash” itp., by upewnić się, że plik jest podpisany
# Sprawdź obecność „Timestamp”
# Przykładowa część wyjścia:
# Authority=ServBay Demo Developer
# Authority=ServBay User CA - ECC Code Signing
# Authority=ServBay Public CA - ECC Root
# Timestamp=Nov 7, 2024 at 18:26:48 (przykładowa data)
# 6. Zmień zawartość pliku, by uszkodzić podpis
# Nadpisanie pliku losowymi danymi zmienia jego hash
echo "abcde" >> /tmp/test
echo "Zmieniono zawartość pliku /tmp/test"
# 7. Ponownie zweryfikuj podpis
# Podpis nie przejdzie weryfikacji
codesign -dvvv /tmp/test
# Przykład wyjścia:
# /tmp/test: code object is not signed at all
# Lub błąd informujący o utracie ważności podpisu z powodu zmian w pliku.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Wyjaśnienia:
security find-identity
służy do wyświetlania certyfikatów dostępnych w Keychain, które można wykorzystać do określonych zadań, tu:codesigning
.codesign -f -s "TwojaTożsamość"
wykonuje podpisanie pliku. Opcja--timestamp
dodaje znacznik czasu – podpis pozostaje ważny nawet po wygaśnięciu certyfikatu, jeśli w momencie podpisywania był ważny.codesign -dvvv
dokładnie weryfikuje podpisy – sprawdza ważność, ścieżkę zaufania i zgodność hasha pliku z podpisem.- Ostatni krok, czyli modyfikacja pliku i ponowna weryfikacja, pokazuje kluczową funkcję podpisu kodu: weryfikację integralności – każda zmiana powoduje unieważnienie podpisu.
Odnawianie certyfikatu
Certyfikaty wydane przez ServBay mają zazwyczaj określony czas ważności (zwykle 800 dni). Przed upływem tego okresu można je odnowić z poziomu panelu zarządzania SSL w ServBay.
- Wejdź do panelu zarządzania certyfikatami SSL.
- Znajdź certyfikat podpisywania kodu, który chcesz odnowić.
- Kliknij przycisk odnawiania: Kliknij ikonę odnawiania (zwykle strzałka w okręgu) przy interesującym certyfikacie.
- Potwierdź odnowienie: Po kliknięciu ServBay wygeneruje nowy certyfikat, którego ważność rozpoczyna się od dnia odnowienia i trwa 800 dni.
Usuwanie certyfikatu
Jeśli dany certyfikat podpisywania kodu nie jest już potrzebny, można go usunąć z ServBay.
- Wejdź do panelu zarządzania certyfikatami SSL.
- Zlokalizuj certyfikat do usunięcia.
- Kliknij przycisk usuwania: Kliknij ikonę kosza przy certyfikacie.
- Potwierdź usunięcie: W oknie potwierdzenia wybierz „Delete” i zatwierdź. Uwaga: po usunięciu certyfikat nie będzie już możliwy do odzyskania.
Najczęściej zadawane pytania (FAQ)
Q: Czy certyfikaty podpisywania kodu wydane przez ServBay są bezpłatne?
A: Tak, certyfikaty wygenerowane przez wewnętrzne CA ServBay są dostępne jako funkcja aplikacji i nie generują dodatkowych kosztów.
Q: Czy mogę użyć certyfikatu ServBay do podpisania mojego komercyjnego oprogramowania i dystrybuować je użytkownikom?
A: Nie. Te certyfikaty są wydawane przez wewnętrzne CA ServBay i nie są domyślnie zaufane przez publiczne systemy operacyjne ani sklepy z aplikacjami. Nadają się wyłącznie do lokalnych środowisk rozwojowych, testowych lub innych kontrolowanych sytuacji. W celu dystrybucji komercyjnej wymagane są certyfikaty od publicznie zaufanych CA.
Q: Zapomniałem hasła do pliku .p12
– co zrobić?
A: ServBay nie przechowuje haseł do kluczy prywatnych. W przypadku utraty hasła nie można już skorzystać z danego certyfikatu – pozostaje go usunąć i wygenerować nowy.
Q: Czy można dodać ServBay User CA do zaufanych w moim systemie operacyjnym?
A: Tak, wystarczy wyeksportować certyfikat ServBay User CA i ręcznie zaimportować go do magazynu zaufanych certyfikatów w systemie operacyjnym lub przeglądarce.
Podsumowanie
Funkcjonalność podpisywania kodu w ServBay umożliwia wygodne testowanie i wewnętrzne zabezpieczanie aplikacji w lokalnym środowisku developerskim. Dzięki temu przewodnikowi poznasz proces wnioskowania, eksportowania i korzystania z takich certyfikatów. Pamiętaj, że są one przeznaczone wyłącznie do celów rozwojowych i testowych i nie powinny być używane tam, gdzie wymagane jest zaufanie publiczne.
W przypadku jakichkolwiek problemów podczas procesu aplikowania lub używania certyfikatów, zalecamy konsultację z oficjalną dokumentacją ServBay lub uzyskanie wsparcia ze społeczności.