Tworzenie i używanie zestawów o silnej nazwie
Silna nazwa składa się z tożsamości zestawu — jej prostej nazwy tekstowej, numeru wersji i informacji o kulturze (jeśli podano) oraz klucza publicznego i podpisu cyfrowego. Jest on generowany na podstawie pliku zestawu przy użyciu odpowiedniego klucza prywatnego. (Plik zestawu zawiera manifest zestawu, który zawiera nazwy i skróty wszystkich plików tworzących zestaw).
Ostrzeżenie
Nie należy polegać na silnych nazwach zabezpieczeń. Zapewniają one tylko unikatową tożsamość.
Zestaw o silnej nazwie może używać tylko typów z innych zestawów o silnych nazwach. W przeciwnym razie integralność zestawu o silnej nazwie zostanie naruszona.
Uwaga
Mimo że platforma .NET Core obsługuje zestawy o silnych nazwach, a wszystkie zestawy w bibliotece .NET Core są podpisane, większość zestawów innych firm nie potrzebuje silnych nazw. Aby uzyskać więcej informacji, zobacz Strong Name Signing on GitHub (Podpisywanie silnej nazwy w usłudze GitHub).
Scenariusz silnej nazwy
W poniższym scenariuszu opisano proces podpisywania zestawu o silnej nazwie, a później odwoływanie się do niego według tej nazwy.
Zestaw A jest tworzony z silną nazwą przy użyciu jednej z następujących metod:
Używanie środowiska programistycznego obsługującego tworzenie silnych nazw, takich jak Visual Studio.
Utworzenie pary kluczy kryptograficznych przy użyciu narzędzia silnej nazwy (Sn.exe) i przypisanie tej pary kluczy do zestawu przy użyciu kompilatora wiersza polecenia lub konsolidatora zestawów (Al.exe). Zestaw Windows SDK zapewnia zarówno Sn.exe, jak i Al.exe.
Środowisko programistyczne lub narzędzie podpisuje skrót pliku zawierającego manifest zestawu przy użyciu klucza prywatnego dewelopera. Ten podpis cyfrowy jest przechowywany w przenośnym pliku wykonywalnym (PE), który zawiera manifest zestawu A.
Zestaw B jest konsumentem zestawu A. Sekcja referencyjna manifestu zestawu B zawiera token reprezentujący klucz publiczny zestawu A. Token jest częścią pełnego klucza publicznego i jest używany, a nie sam klucz, aby zaoszczędzić miejsce.
Środowisko uruchomieniowe języka wspólnego weryfikuje podpis silnej nazwy po umieszczeniu zestawu w globalnej pamięci podręcznej zestawów. W przypadku powiązania według silnej nazwy w czasie wykonywania środowisko uruchomieniowe języka wspólnego porównuje klucz przechowywany w manifeście zestawu B z kluczem używanym do generowania silnej nazwy zestawu A. Jeśli testy zabezpieczeń platformy .NET kończą się powodzeniem, zestaw B ma gwarancję, że bity zestawu A nie zostały naruszone i że te bity rzeczywiście pochodzą od deweloperów zestawu A.
Uwaga
W tym scenariuszu nie są rozwiązywane problemy z zaufaniem. Zestawy mogą mieć pełne podpisy Microsoft Authenticode oprócz silnej nazwy. Podpisy authenticode zawierają certyfikat, który ustanawia zaufanie. Należy pamiętać, że silne nazwy nie wymagają podpisania kodu w ten sposób. Silne nazwy zapewniają tylko unikatową tożsamość.
Pomijanie weryfikacji podpisu zaufanych zestawów
Począwszy od programu .NET Framework 3.5 z dodatkiem Service Pack 1, podpisy o silnej nazwie nie są weryfikowane, gdy zestaw jest ładowany do domeny aplikacji o pełnym zaufaniu, takiej jak domyślna domena aplikacji dla MyComputer
strefy. Jest to nazywane funkcją obejścia o silnej nazwie. W środowisku o pełnym zaufaniu wymagania dotyczące zawsze powodzenia dla StrongNameIdentityPermission podpisanych zestawów o pełnym zaufaniu, niezależnie od ich podpisu. Funkcja pomijania o silnej nazwie pozwala uniknąć niepotrzebnego obciążenia weryfikacji podpisu silnej nazwy zestawów o pełnym zaufaniu w tej sytuacji, co pozwala na szybsze ładowanie zestawów.
Funkcja obejścia ma zastosowanie do każdego zestawu podpisanego za pomocą silnej nazwy i ma następujące cechy:
W pełni zaufany bez StrongName dowodów (na przykład ma
MyComputer
dowody strefy).Załadowano do w pełni zaufanego AppDomainelementu .
Załadowany z lokalizacji pod właściwością ApplicationBase tego AppDomainobiektu .
Nie jest podpisany z opóźnieniem.
Tę funkcję można wyłączyć dla poszczególnych aplikacji lub dla komputera. Zobacz Instrukcje: wyłączanie funkcji obejścia silnej nazwy.
Powiązane tematy
Nazwa | opis |
---|---|
Instrukcje: tworzenie pary kluczy publiczny-prywatny | Opisuje sposób tworzenia pary kluczy kryptograficznych na potrzeby podpisywania zestawu. |
Instrukcje: podpisywanie zestawu przy użyciu silnej nazwy | Opisuje sposób tworzenia zestawu o silnej nazwie. |
Ulepszone silne nazewnictwo | Opisuje ulepszenia silnych nazw w programie .NET Framework 4.5. |
Instrukcje: odwołanie do zestawu o silnej nazwie | Opisuje sposób odwołowania się do typów lub zasobów w zestawie o silnej nazwie w czasie kompilacji lub czasie wykonywania. |
Instrukcje: wyłączanie funkcji obejścia silnej nazwy | Opisuje sposób wyłączania funkcji, która pomija walidację podpisów silnej nazwy. Tę funkcję można wyłączyć dla wszystkich lub dla określonych aplikacji. |
Tworzenie zestawów | Zawiera omówienie zestawów jednoplikowych i wieloplikowych. |
Jak opóźnić podpisywanie zestawu w programie Visual Studio | W tym artykule wyjaśniono, jak podpisać zestaw z silną nazwą po utworzeniu zestawu. |
Sn.exe (narzędzie silnej nazwy) | Opisuje narzędzie zawarte w programie .NET Framework, które ułatwia tworzenie zestawów o silnych nazwach. To narzędzie dostarcza opcje do zarządzania kluczami oraz generowania podpisów i weryfikowania ich. |
Al.exe (konsolidator zestawów) | Opisuje narzędzie zawarte w programie .NET Framework, które generuje plik z manifestem zestawu z modułów lub plików zasobów. |