JSON.NET과 같은 다양한 타사 라이브러리를 사용하여 응용 프로그램을 만들었습니다.JSON.NET과 같은 써드 파티 DLL에 디지털 서명해야합니까?
내 응용 프로그램을 구성하는 모든 DLL이 제 3의 DLL을 포함하여 디지털 서명되어 있는지 확인하고 싶습니다. 이것들이 저자에 의해 서명되지 않았다는 것을 감안할 때, 제 3 자의 것들에 서명 할 수 있습니까?
JSON.NET과 같은 다양한 타사 라이브러리를 사용하여 응용 프로그램을 만들었습니다.JSON.NET과 같은 써드 파티 DLL에 디지털 서명해야합니까?
내 응용 프로그램을 구성하는 모든 DLL이 제 3의 DLL을 포함하여 디지털 서명되어 있는지 확인하고 싶습니다. 이것들이 저자에 의해 서명되지 않았다는 것을 감안할 때, 제 3 자의 것들에 서명 할 수 있습니까?
강력한 이름 지정 또는 authenticode 서명에 대해 이야기하고 있습니까? 후자의 문제는 authenticode 서명 된 어셈블리가로드되고 .NET이 인증서의 유효성을 검사하고 일부 구성 (예 : OCSP를 검사해야하고 연결할 수없는 경우)에 수십 초가 걸릴 수 있습니다. 우리는 Authenticode와 X.509 인증서로 어셈블리를 서명하는 것을 중단해야했습니다.
서명 된 어셈블리가 어떤 방식 으로든 악성 코드에 의해 사용되는 경우 안티 바이러스 회사의 유능한 전문가가 아닌 사람이 (a) 어셈블리를 악성 코드로 표시하고 (b) 악화되는 경우 불평 할 수 있습니다 코드 서명 인증서를 발급 한 인증 기관에 연결하면 인증서가 취소됩니다.
.NET의 강력한 이름 지정 (인증서가없는 키 쌍을 사용)은 개인 비즈니스에 다소 차이가 있습니다.
업데이트 : Authenticode는 일반적으로 PE 형식 파일 (EXE 및 DLL), SYS 및 CAB에 적용됩니다. 강력한 이름 지정은 순수한 .NET 기술입니다.
경고 메시지는 Authenticode 서명에 대해 설명합니다. 설치 프로그램에 서명하는 것이 필수적이며, 서명 된 응용 프로그램 만 실행하도록 시스템 정책을 설정하지 않으면 메시지를 제거하기에 충분합니다 (이 경우 응용 프로그램의 EXE에도 서명해야합니다).
인터넷에서 같은 질문에 대한 답변을 찾기 위해 (실패한) 시도했습니다.
Google과 Adobe가 제품을 어떻게 제공했는지 확인한 결과 타사 제품을 포함하여 폴더의 모든 바이너리가 서명 된 것으로 나타났습니다.
몇 가지 예 : 1. Google 크롬에는 Adobe가 저작권을 보유하고 있지만 Google Inc.에서 디지털 서명 한 pepflashplayer.dll이 포함되어 있습니다. 2. Adobe Reader에는 IBM이 저작권을 갖고 있지만 "Adobe Systems"가 디지털 서명 한 icudt40.dll이 포함되어 있습니다.
따라서 가장 좋은 방법은 응용 프로그램을 구성하는 모든 바이너리에 서명하는 것입니다 - 파티 용 것들. 고객의 컴퓨터에서 발생하는 조작을 피하거나 적어도 쉽게 감지 할 수 있으므로 도움이됩니다.
@EugeneMayevskiEldoS : 감사. 음, 확실하지 않습니다. 차이는 제가 알고 있었던 것이 아닙니다. 내가하려고하는 모든 것은 "이 응용 프로그램이 서명되지 않았습니다"라는 경고없이 응용 프로그램을 설치/실행하도록하는 것입니다. –
어쩌면 DLL 자체가 아닌 설치 프로그램에 서명해야할까요? –
질문에 대한 답변을 추가했습니다. –