11

Tôi có hai chứng chỉ ký mã (một SHA-1, một SHA-256) mà tôi muốn áp dụng cho cùng một tệp. Tôi cố gắng để thêm chứng chỉ SHA-256, nhưng điều này không:Làm thế nào để một mã hai ký hiệu đúng với dấu thời gian?

:: Signs with the SHA-1 certificate 
signtool sign /sha1 8f52fa9db30525dfabb35b08bd1966693a30eccf /t http://timestamp.verisign.com/scripts/timestamp.dll my_app_here.exe 
:: Signs with the SHA-2 certificate 
signtool sign /sha1 8b0026ecbe5bf245993b26e164f02e1313579e47 /as /t http://timestamp.verisign.com/scripts/timestamp.dll my_app_here.exe 

này không thành công với các lỗi:

Done Adding Additional Store 
SignTool Error: SignedCode::Sign returned error: 0x80070057 
     The parameter is incorrect. 
SignTool Error: An error occurred while attempting to sign: my_app_here.exe 

Nếu tôi loại bỏ các URL timestamp từ lệnh thứ hai, việc ký kết thành công, nhưng chữ ký SHA-2 không có dấu thời gian. (Có hay không tôi đặt dấu thời gian vào chữ ký đầu tiên không có hiệu lực)

Mục đích ở đây là cho phép ai đó xác minh ứng dụng có chứng chỉ mạnh hơn nếu họ đang sử dụng hệ điều hành hỗ trợ điều này. xác nhận trên các hệ điều hành không hỗ trợ các chứng chỉ mạnh hơn (Vista, XP).

Điều này có thể xảy ra không?

+0

Vâng, rất vui mừng khi biết tôi không đơn độc trong nhu cầu của tôi cho điều này ... – vcsjones

+0

Bạn hãy thử '/ td sha256/tr ...' thay vì '/ t ... 'cho chữ ký thứ hai? –

Trả lời

12

SHA-2 Ký tự xác thực yêu cầu máy chủ dấu thời gian RFC 3161. URL timestamp.verisign.com không hoạt động cho điều này.

URL RFC 3161 cho Symantec/Verisign là:

http://sha256timestamp.ws.symantec.com/sha256/timestamp 

Nếu bạn vẫn đang sử dụng http://timestamp.geotrust.com/tsa URL cũ, và nó được không (April 2017), bạn nên cập nhật nó vào một ở trên. GeoTrust, giống như Verisign, hiện là một phần của Symantec.

Nguồn:

https://knowledge.verisign.com/support/code-signing-support/index?page=content&id=SO5820

+0

Cảm ơn bạn đã giải thích "tại sao nó không hoạt động", các câu trả lời khác tôi đã đọc bỏ lỡ phần đó. Để làm cho nó hoạt động, chỉ cần thay thế '/ t http: // timestamp.verisign.com/scripts/timestamp.dll' bằng'/tr http: // timestamp.geotrust.com/tsa'. –

+1

Máy chủ GeoTrust vẫn sử dụng thông báo SHA1 cho dấu thời gian và điều gì còn tồi tệ hơn, chuỗi chứng chỉ của họ chấm dứt trong chứng chỉ gốc với thông báo MD5. Nếu bạn muốn tiêu hóa SHA256 cho dấu thời gian sử dụng http://timestamp.globalsign.com/?signature=sha2 làm URL (chỉ định/td SHA256 cũng không gây hại). –

+4

SHA-256 với URL thời gian RFC 3161 là http://sha256timestamp.ws.symantec.com/sha256/timestamp –

Các vấn đề liên quan