Dịch vụ dấu thời gian thay thế cho Authenticode


115

Chúng tôi thực hiện ký mã và đánh dấu thời gian cho tất cả các bản dựng sản xuất của chúng tôi. Đôi khi (thường là khi chúng tôi chuẩn bị RTM (!)) Máy chủ dấu thời gian tại Verisign (" http://timestamp.verisign.com/scripts/timstamp.dll ") quyết định chuyển sang chế độ ngoại tuyến không liên tục.

Chúng ta phải làm gì trong trường hợp này?

  • Máy chủ dấu thời gian có phải được cơ quan cấp chứng chỉ gốc của bạn lưu trữ không?
  • Có bất kỳ máy chủ dấu thời gian được lưu trữ trên mạng nào khác mà chúng tôi có thể sử dụng thay vì Verisign nếu máy chủ của họ không? Đề xuất cho các lựa chọn thay thế miễn phí và có sẵn khác được hoan nghênh :)

Câu trả lời:


91

Tôi sử dụng tệp lô sau đây lặp lại tối đa 300 lần. Có hai đối số,% 1 là đường dẫn đến thư mục chứa tệp loạt, tệp pfx và signtool.exe. % 2 là đường dẫn đầy đủ đến tệp đang được ký. Bạn có thể gọi điều này trong sự kiện xây dựng bài đăng trực quan tại studio của mình bằng cách gọi "$ (SolutionDir) thirdparty \ sign \ sign.bat" "$ (SolutionDir) thirdparty \ sign" "$ (TargetPath)" Tôi đã sửa đổi tệp hàng loạt này thành sử dụng các máy chủ dấu thời gian khác nhau trong mỗi lần lặp lại. Hiện tại nó sử dụng Comodo, Verisign, GlobalSign và Starfield. Hy vọng rằng đây là The Ultimate Signing Script;)

@echo off    

REM create an array of timestamp servers...
set SERVERLIST=(http://timestamp.comodoca.com/authenticode http://timestamp.verisign.com/scripts/timestamp.dll http://timestamp.globalsign.com/scripts/timestamp.dll http://tsa.starfieldtech.com)

REM sign the file...
%1\signtool.exe sign /f %1\comodo.pfx /p videodigital %2

set timestampErrors=0

for /L %%a in (1,1,300) do (

    for %%s in %SERVERLIST% do (

        REM try to timestamp the file. This operation is unreliable and may need to be repeated...
        %1\signtool.exe timestamp /t %%s %2

        REM check the return value of the timestamping operation and retry a max of ten times...
        if ERRORLEVEL 0 if not ERRORLEVEL 1 GOTO succeeded

        echo Signing failed. Probably cannot find the timestamp server at %%s
        set /a timestampErrors+=1
    )

    REM wait 2 seconds...
    choice /N /T:2 /D:Y >NUL
)

REM return an error code...
echo sign.bat exit code is 1. There were %timestampErrors% timestamping errors.
exit /b 1

:succeeded
REM return a successful code...
echo sign.bat exit code is 0. There were %timestampErrors% timestamping errors.
exit /b 0

Tôi cũng đưa http://timestamp.comodoca.com vào các trang web đáng tin cậy (cảm ơn Vince). Tôi nghĩ đó có thể là một bước quan trọng. Tôi cũng đã cập nhật chứng chỉ gốc trên PC.


3
Tôi chỉ đang sứt mẻ ở đây. Tôi biết đây là một câu trả lời cũ. Nhưng tập lệnh này "gần như hoàn hảo" và vì vậy tôi muốn chỉ thay đổi của mình. Khi tập lệnh được chạy dưới dạng sự kiện sau xây dựng. Nếu dấu thời gian không thành công nhưng dấu thời gian sau là thành công, quá trình xây dựng vẫn không thành công vì MSBuild theo dõi các diễn biến của signtool.exe và thấy lỗi, do đó nghĩ rằng đó là một thất bại. Tôi đã có điều này xảy ra trong VS2012 và từ một máy xây dựng. Cách khắc phục của tôi là thay đổi dấu thời gian để trừu tượng hóa nó thành một cmd khác để MSBuild không thể gián điệp như: start / wait "Sign Tool" / D "% 1" "signtool.exe" timestamp / t %% s% 2
Skintkingle

1
Tôi không hiểu phần "và thử lại tối đa mười lần ..." . Các %%abiến không bao giờ được sử dụng. Có lỗi đánh máy trong vòng lặp for hoặc trong nhận xét không?
l33t

1
Lưu ý bổ sung cho câu trả lời xuất sắc của flobadob. Nếu bạn định sử dụng điều này trong bước Hậu xây dựng trong studio trực quan, bạn sẽ cần sử dụng câu lệnh "Gọi". Xem bài đăng này: Visual Studio Multiple Post Build Commands
GadgetNC Ngày

1
Đối với sha256, bạn cần sử dụng / tr " sha256timestamp.ws.symantec.com/sha256/timestamp " ngay bây giờ khá nhanh
Vince

1
Dành cho mọi người đang thắc mắc. Có, giá trị sau /plà mật khẩu * .pfx.
JensG

16

Tôi không chắc liệu máy chủ dấu thời gian có phải thuộc sở hữu của CA gốc hay không.

Chúng tôi sử dụng http://timestamp.comodoca.com/authenticode (và có chứng chỉ xác thực Comodo) nhưng thực sự gặp sự cố tương tự, trong đó máy chủ của họ dường như thỉnh thoảng xuất hiện lỗi hoặc hết thời gian. Chúng tôi ký như một phần của bản dựng hàng đêm (hoặc theo yêu cầu) trên máy chủ tích hợp liên tục của chúng tôi chỉ dành cho các bản dựng Phát hành (không phải cho các bản dựng Gỡ lỗi).

Tôi đã giải quyết vấn đề này (chủ yếu) theo hai cách:

  • Nếu cuộc gọi tới signtool.exe không thành công, nó sẽ thử lại (ngay lập tức) hai lần nữa
  • Tập lệnh xây dựng được sử dụng để ký mọi exe trong một bước (và chúng tôi có một số như một phần của sản phẩm của mình) và bây giờ nó thực hiện từng bước một - mất nhiều thời gian hơn nhưng ít có khả năng bị lỗi

Giữa những điều này, lỗi xây dựng do sự cố máy chủ dấu thời gian gây ra đã từ một hoặc hai lần một tuần hầu như không bao giờ xảy ra.

CHỈNH SỬA: Tôi có một nhiệm vụ MSBuild thực hiện việc này (cũng như đọc mật khẩu chứng chỉ được lưu trữ bên ngoài kho lưu trữ ) tại https://gist.github.com/gregmac/4cfacea5aaf702365724


12

Nó hoạt động độc đáo bằng cách thay thế url dấu thời gian verisign bằng một trong những thứ sau:

http://timestamp.comodoca.com/authenticode
http://www.trustcenter.de/codesigns/timestamp


2
Có vẻ như dấu thời gian không còn khả dụng trên trustcenter.de: "Symantec Tất cả các Sản phẩm và Dịch vụ do TC TrustCenter GmbH cung cấp không còn khả dụng nữa. Mọi câu hỏi liên quan đến vấn đề này nên được chuyển đến: Symantec TC TrustCenter Điện thoại hỗ trợ 24/7. Điện thoại: +1 -800-579-2848 hoặc + 1-520-477-3104 "
Valdimar

8

Dịch vụ đánh dấu thời gian VeriSign là miễn phí. Đó có thể là lý do tại sao độ tin cậy của nó kém hơn; họ không cung cấp cho nó một ngân sách bảo trì!

Chắc chắn đây là một vấn đề lớn . Lãng phí thời gian do các bản dựng không thành công do lỗi mã thời gian là một vấn đề ngày càng tăng trong ngành phát triển phần mềm. Chắc chắn, bạn có thể viết một tập lệnh phức tạp để xoay vòng, cho đến khi bạn tìm thấy một máy chủ đóng dấu thời gian hoạt động .. nhưng, thực sự thì sao?

Chúng ta nên yêu cầu tốt hơn. Chúng tôi trả RẤT NHIỀU cho những chứng chỉ này.

Lưu ý rằng sau đó tôi đã tìm thấy các máy chủ đóng dấu thời gian thay thế mà ít người nghe nói đến có thể sử dụng tốt trong những khoảng thời gian Verisign và Comodo ngừng hoạt động (thường xảy ra trong giờ làm việc của ngày làm việc).


7

Có thể sử dụng bất kỳ máy chủ dấu thời gian nào: Gần đây tôi đã chuyển từ máy chủ dấu thời gian của nhà phát hành sang Verisign vì tôi nhận thấy rằng máy chủ của GlobalSign không đáng tin cậy. Hơn nữa, Thawte không chạy máy chủ dấu thời gian của riêng họ nhưng khuyến nghị mọi người sử dụng Verisign's.


1
Thawte là Verisign.
Người dùng StackExchange vào

4

Bạn thường có thể sử dụng bất kỳ dịch vụ dập thời gian nào mà bạn muốn. Mặc dù hầu hết các CA sẽ cung cấp dịch vụ đóng dấu thời gian. Ví dụ

http://timestamp.globalsign.com/scripts/timstamp.dll
http://timestamp.comodoca.com/authenticode
http://www.startssl.com/timestamp
http://timestamp.digicert.com?alg=sha1
http://timestamp.digicert.com?alg=sha256

timestamp.verisign.com đã chính thức EOL vào cuối năm 2019 để biết thêm thông tin, cô ấy trả lời câu hỏi bên dưới.

http-timestamp-verisign-com-scripts-timstamp-dll-not-available


đang tìm kiếm thông số kỹ thuật thông báo kỹ thuật số! Tài liệu này ở đâu?
yano

1
knowledge.digicert.com/alerts/... hy vọng điều này sẽ giúp
RickWeb

3

Tôi đã từng gặp vấn đề tương tự. Máy chủ verisign đôi khi không thể truy cập được đối với một số tệp mà tôi đã cố gắng ký (nhưng các tệp khác trong cùng một bản dựng đã được ký chính xác).

Tôi thường thử lại và nó hoạt động nhưng hôm nay, không có cách nào.

Vì vậy, sau một số nghiên cứu không hiệu quả trên internet, tôi đã cố gắng đưa http: //*.verisign.com vào các trang web vùng đáng tin cậy và nó hoạt động ... Cuối cùng tôi không biết liệu máy chủ có vấn đề và bây giờ hoạt động hay không hay tôi đã làm điều đúng, tôi sẽ thấy trong những ngày tới. Hy vọng nó có thể giúp ích khác đang bị chặn.

Cấu hình máy chủ: Windows server 2003 sp2, IE8, bật bảo mật nâng cao.


Có lẽ là tình cờ khi tôi thấy rằng trang web đó chỉ đơn giản là bị quá tải và đi xuống. Bạn có thể thấy nó trong giờ làm việc cao điểm thường xuyên.
dyasta

1

Bạn có thể sử dụng Jsign thay vì signtool để ký và đánh dấu thời gian cho các bản dựng của mình, nó hỗ trợ việc chuyển sang các dịch vụ dấu thời gian thay thế.

Cú pháp dòng lệnh trông giống như sau:

jsign --keystore keystore.p12 --alias test --storepass password \
      --tsaurl http://timestamp.comodoca.com/authenticode,http://timestamp.globalsign.com/scripts/timestamp.dll \
      application.exe

Bạn cũng có thể cấu hình số lần thử (với --tsretries) và độ trễ giữa các lần thử (với --tsretrywait).


với một cái tên như vậy bạn nghĩ nó có thể xử lý JAR
trượng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.