Zarządzanie podpisywaniem zestawu i manifestu
Podpisywanie silnej nazwy zapewnia składnikowi oprogramowania globalnie unikatową tożsamość. Silne nazwy są używane do zagwarantowania, że zestaw nie może być fałszowany przez kogoś innego i aby upewnić się, że zależności składników i instrukcje konfiguracji są mapowane na poprawny składnik i wersję składnika.
Silna nazwa składa się z tożsamości zestawu (prostego tekstu, numeru wersji i informacji o kulturze) oraz tokenu klucza publicznego i podpisu cyfrowego.
Aby uzyskać informacje na temat podpisywania zestawów w projektach Visual Basic i C#, zobacz Tworzenie i używanie zestawów o silnych nazwach.
Aby uzyskać informacje na temat podpisywania zestawów w projektach języka C++, zobacz Zestawy o silnych nazwach (C++/CLI).
Uwaga
Podpisywanie silnej nazwy nie chroni przed odwrotną inżynierią zestawu. Aby chronić przed inżynierią odwrotną, zobacz Dotfuscator Community.
Typy zasobów i podpisywanie
Możesz podpisać zestawy platformy .NET i manifesty aplikacji:
Pliki wykonywalne (.exe)
Manifesty aplikacji (.exe.manifest)
Manifesty wdrażania (.application)
Współużytkowane zestawy składników (.dll)
Podpisz następujące typy elementów zawartości:
Zestawy, jeśli chcesz wdrożyć je w globalnej pamięci podręcznej zestawów (GAC).
Manifesty aplikacji ClickOnce i wdrożenia. Program Visual Studio domyślnie włącza podpisywanie dla tych aplikacji.
Podstawowe zestawy międzyoperacyjności, które są używane do współdziałania modelu COM. Narzędzie TLBIMP wymusza silne nazewnictwo podczas tworzenia podstawowego zestawu międzyoperacyjnego z biblioteki typów COM.
Ogólnie rzecz biorąc, nie należy podpisywać plików wykonywalnych. Silnie nazwany składnik nie może odwoływać się do składnika nienależącego do nazwy wdrożonego w aplikacji. Program Visual Studio nie podpisuje plików wykonywalnych aplikacji, ale zamiast tego podpisuje manifest aplikacji, który wskazuje słaby plik wykonywalny o nazwie. Unikaj podpisywania składników prywatnych w aplikacji, ponieważ podpisywanie może utrudnić zarządzanie zależnościami.
Jak podpisać zestaw w programie Visual Studio
Procedura podpisywania zestawu zależy od używanej wersji projektanta projektu.
W przypadku projektów języka C# .NET Core (i .NET 5 i nowszych) w programie Visual Studio 2022:
- Otwórz okno właściwości projektu (kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań i wybierz polecenie Właściwości).
- W obszarze Kompilacja wyszukaj pozycję Silne nazewnictwo i zaznacz pole wyboru Podpisz zestaw. Podczas zaznaczenia pola wyboru są wyświetlane dodatkowe opcje pliku klucza i opóźnione podpisywanie.
- Określ plik klucza.
Jeśli nie masz pliku klucza, możesz użyć wiersza polecenia, aby utworzyć .snk
plik. Możesz również użyć lub wygenerować certyfikat w .pfx
pliku przy użyciu procesu publikowania , a w kroku Manifesty podpisywania można utworzyć certyfikat testowy do użycia tylko podczas programowania i testowania lub w środowisku produkcyjnym, użyć certyfikatu wystawionego przez dział IT lub autoryzowanego źródła. Zobacz Deploy a .NET Windows Desktop app with ClickOnce (Wdrażanie aplikacji klasycznej systemu Windows platformy .NET za pomocą technologii ClickOnce).
W przypadku projektów .NET Framework i Visual Basic w programie Visual Studio 2022 lub Visual Studio 2019:
- Otwórz kartę Podpisywanie okna właściwości projektu (kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań i wybierz polecenie Właściwości). Wybierz kartę Podpisywanie .
- Zaznacz pole wyboru Podpisz zestaw.
- Określ plik klucza. Jeśli zdecydujesz się utworzyć nowy plik klucza, nowe pliki kluczy są zawsze tworzone w formacie pfx . Potrzebujesz nazwy i hasła dla nowego pliku.
Ostrzeżenie
Zawsze należy chronić plik klucza hasłem, aby uniemożliwić innym osobom korzystanie z niego. Klucze można również zabezpieczyć przy użyciu dostawców lub magazynów certyfikatów.
Możesz również wskazać utworzony klucz. Aby uzyskać więcej informacji na temat tworzenia kluczy, zobacz Create a public-private key pair (Tworzenie pary kluczy publicznych-prywatnych).
Jeśli masz dostęp tylko do klucza publicznego, możesz odroczyć przypisywanie klucza przy użyciu podpisywania opóźnienia. Aby włączyć podpisywanie opóźnień, zaznacz pole wyboru Tylko znak opóźnienia. Projekt podpisany z opóźnieniem nie jest uruchamiany i nie można go debugować. Można jednak pominąć weryfikację podczas programowania przy użyciu narzędzia Sn.exe silnej nazwy z opcją -Vr
.
Aby uzyskać informacje o manifestach podpisywania, zobacz Instrukcje: podpisywanie manifestów aplikacji i wdrażania.