Tôi đang triển khai tính năng cập nhật tự động và cần một số lời khuyên về cách thực hiện điều này một cách an toàn bằng cách sử dụng các phương pháp hay nhất. Tôi muốn sử dụng chữ ký Authenticode của tệp đã tải xuống để xác minh rằng nó có thể chạy an toàn (tức là bắt nguồn từ công ty của chúng tôi và không bị giả mạo). Câu hỏi của tôi rất giống với câu hỏi # 2008519.Xác minh chữ ký Authenticode là từ công ty chúng tôi để tự động cập nhật
Câu hỏi dưới cùng: cách tốt nhất, an toàn nhất để kiểm tra chữ ký Authenticode cho tính năng cập nhật tự động là gì? Bạn nên kiểm tra những trường nào trong chứng chỉ? Yêu cầu là: (1) chữ ký kiểm tra là hợp lệ, (2) kiểm tra chữ ký của tôi, (3) khách hàng cũ vẫn có thể cập nhật khi chứng chỉ của tôi hết hạn và tôi nhận được chứng chỉ mới.
Dưới đây là một số thông tin cơ bản/ý tưởng từ nghiên cứu của tôi: Tôi tin rằng điều này có thể được chia thành hai bước:
Xác minh rằng chữ ký là hợp lệ. Tôi tin rằng điều này nên được dễ dàng bằng cách sử dụng WinVerifyTrust như nêu trong http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx - Tôi không mong đợi vấn đề ở đây.
Xác minh rằng chữ ký tương ứng với công ty của chúng tôi chứ không phải một công ty khác. Đây có vẻ là câu hỏi khó trả lời hơn:
Một khả năng là kiểm tra một số chuỗi trong chữ ký. Có thể lấy thông qua mã tại bài viết MS KB # 323809, nhưng bài viết này không đưa ra khuyến nghị về những trường nào nên được kiểm tra cho loại ứng dụng này (hoặc bất kỳ trường nào khác, cho vấn đề đó). Question #1072540 cũng minh họa cách nhận một số thông tin chứng chỉ, nhưng lại không đề xuất những trường nào cần kiểm tra. Mối quan tâm của tôi là các chuỗi có thể không phải là kiểm tra tốt nhất: điều gì sẽ xảy ra nếu một người khác có thể có được chứng chỉ có cùng tên, chẳng hạn? Hoặc nếu có lý do chính đáng để chúng ta thay đổi dây trong tương lai?
Người ở số question #2008519 có yêu cầu rất giống nhau. Nhu cầu của mình cho một "TrustedByUs" chức năng là giống hệt với tôi. Tuy nhiên, anh ta đi kiểm tra bằng cách so sánh các khóa công khai. Trong khi điều này sẽ làm việc trong ngắn hạn, có vẻ như nó sẽ không hoạt động cho một tính năng cập nhật tự động. Điều này là do chứng chỉ ký mã chỉ có hiệu lực trong tối đa 2 - 3 năm. Do đó, trong tương lai, khi chúng tôi mua chứng chỉ mới trong 2 năm, các khách hàng cũ sẽ không thể cập nhật thêm nữa do thay đổi khóa công khai.
Theo dõi: Tôi làm tăng nhiều hay ít đề xuất của Brian. (1) Xác minh chữ ký Authenticode với WinTrustVerify, (2) kiểm tra đối tượng của chữ ký Authenticode; đảm bảo rằng chuỗi khớp với tên công ty của tôi, (3) như một biện pháp bổ sung, tôi thực hiện một chữ ký riêng với DSA. Chữ ký được gửi cùng với tệp thi hành và được chọn. –
Đồng thời xem [Định dạng chữ ký thực thi Windows Authenticode của Microsoft] của Microsoft (http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx). – jww