2010-12-17 4 views
15

대 강한 이름은 예를 들어, 나는 다음과 같은 질문을 가지고, .NET here에 강력한 이름에 대해 읽어 데 , DLL 및 MSI 파일. Windows의 이점은 MSI가 신뢰할 수있는 출처에서 비롯된 것이며 각 파일의 신뢰성이 필요할 경우 확인할 수 있다는 것입니다..NET : 우리는 우리가 우리의 모든 EXE에 서명하는을 가진 <strong>인증 코드</strong> 코드 서명 인증서가</p> <p>: 인증 코드

현재은 . NET의 강력한 이름은 사용하지 않습니다. 필자는 강력한 이름의 파일은 기본적으로 자체 서명 된 인증서로 디지털 서명되었음을 의미합니다. 이것에 대한 나의 견해는 신뢰할 수있는 인증 기관이 서명 한 Authenticode 인증서가 루트 인증서가 없기 때문에 누구도 검증 할 수없는 자체 서명 인증서보다 훨씬 가치가 있다는 것입니다 (우리는이를 최종 사용자에게 배포하지 않을 것이며, 우리는!?).

질문 : 인증 코드 서명이 이미 사용하는 경우추가 강력한 명명 어셈블리 값이 있습니까?

답변

11

강력한 이름을 만든 이유에 따라 대답이 달라집니다. 강력한 이름을 사용하려면 어셈블리의 고유 ID를 만들어야합니다. 예를 들어 GAC에서 어셈블리를 푸시해야하는 경우 강력한 이름을 사용해야합니다. 그러나 강력한 이름은 게시자의 인증을 확인하기위한 것이 아닙니다. Authenticode는 그 목적에 부합합니다. 이 기사를 참조하십시오 : http://blogs.msdn.com/b/shawnfa/archive/2005/12/13/authenticode-and-assemblies.aspx

+0

그래서 GAC에 내 어셈블리를 넣을 때만 강력한 이름이 필요합니다. 우리는 거기에 어셈블리를 두지 않으므로 강력한 이름이 필요 없습니다. –

+4

GAC에 퍼블리싱 할 때 _entirely_가 아닙니다. 앱에서 참조하는 DLL이 의도 한 것임을 확인하는데도 사용할 수 있습니다. 강력한 이름을 사용하면 참조 된 모든 DLL도 강력한 이름을 요구하기 때문에 누군가 스와핑을하지 못하게됩니다. 악의적 인 DLL. 다시 말하지만, 이것은 작성한 것을 확인하지는 않지만, 모든 어셈블리가 동일한 SNK에 대한 액세스 권한을 가진 누군가에 의해 작성되었는지 확인합니다 – Basic