Authenticode için alternatif zaman damgası hizmetleri


115

Tüm üretim yapılarımız için kod imzalama ve zaman damgası gerçekleştiriyoruz. Zaman zaman (genellikle RTM (!) Yapmak üzereyken) Verisign'daki zaman damgası sunucusu (" http://timestamp.verisign.com/scripts/timstamp.dll ") ara sıra çevrimdışı olmaya karar verir.

Bu durumda ne yapmalıyız?

  • Zaman damgası sunucusunun kök sertifika yetkiliniz tarafından barındırılması gerekiyor mu?
  • Sunucuları çalışmıyorsa Verisign yerine kullanabileceğimiz başka ağda barındırılan zaman damgası sunucuları var mı? Diğer yüksek oranda erişilebilir ve ücretsiz alternatifler için öneriler bekliyoruz :)

Yanıtlar:


91

En fazla 300 kez döngü yapan aşağıdaki toplu iş dosyasını kullanıyorum. İki bağımsız değişken var,% 1 toplu iş dosyasını, pfx dosyasını ve signtool.exe'yi içeren bir klasörün yoludur. % 2, imzalanan dosyanın tam yoludur. Bunu, Visual Studio post build olayınızda "$ (SolutionDir) thirdparty \ signing \ sign.bat" "$ (SolutionDir) thirdparty \ signing" "$ (TargetPath)" gibi bir şeyle çağırabilirsiniz. Bu toplu iş dosyasını şu şekilde değiştirdim her yinelemede farklı zaman damgası sunucuları kullanın. Şu anda Comodo, Verisign, GlobalSign ve Starfield kullanıyor. Umarım bu The Ultimate Signing Script'dir;)

@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

Ayrıca http: //timestamp.comodoca.com'u güvenilir sitelere koydum (teşekkürler Vince). Bunun önemli bir adım olabileceğini düşünüyorum. Bilgisayardaki kök sertifikaları da güncelledim.


3
Ben sadece buradayım. Bunun eski bir cevap olduğunu biliyorum. Ama bu senaryo "neredeyse" mükemmel ve bu yüzden sadece değişikliğime katkıda bulunmak istiyorum. Komut dosyası bir derleme sonrası olayı olarak çalıştırıldığında. Bir zaman damgası başarısız olursa, ancak aşağıdaki zaman damgası başarılıysa, MSBuild signtool.exe'nin olaylarını gözetlediğinden ve bir hata gördüğü için derleme başarısız olur ve bu nedenle bunun bir başarısızlık olduğunu düşünür. Bunu VS2012 içinde ve bir yapı makinesinden yaşadım. Benim düzeltmem,
MSBuild'in casusluk yapmaması için

1
"Ve en fazla on kere tekrar dene ..." kısmını anlamıyorum . %%aDeğişken hiçbir zaman kullanılmaz. For döngüsünde veya yorumda bir yazım hatası var mı?
l33t

1
Flobadob'un mükemmel cevabına ek not. Bunu visual studio bir Post-Build adımında kullanacaksanız, "Call" ifadesini kullanmanız gerekecektir. Bu
gönderiye

1
Sha256 için artık / tr " sha256timestamp.ws.symantec.com/sha256/timestamp " kullanmanız gerekiyor, bu arada oldukça hızlı
Vince

1
Merak eden herkes için. Evet, sonraki değer /p* .pfx şifresidir.
JensG

16

Zaman damgası sunucusunun kök CA'ya ait olması gerekip gerekmediğinden emin değilim.

Biz kullanmak http://timestamp.comodoca.com/authenticode (ve bir Comodo authenticode sertifikasına sahip) ama aslında kendi sunucu bazen bir hata veya zaman aşımına vermek görünüyor ki, benzer bir sorun var. İmzalama işlemini, yalnızca Sürüm derlemeleri için (Debug derlemeleri için değil) sürekli entegrasyon sunucumuzda gecelik (veya isteğe bağlı) bir derlemenin parçası olarak yapıyoruz.

Bunu (çoğunlukla) iki şekilde aştım:

  • Signtool.exe çağrısı başarısız olursa, iki kez daha (hemen) tekrar dener
  • Her exe'yi bir adımda imzalamak için kullanılan derleme betiği (ve ürünümüzün bir parçası olarak birkaç tane var) ve şimdi tek tek yapıyor - biraz daha uzun sürüyor, ancak başarısız olma olasılığı daha düşük

Bunların arasında, zaman damgası sunucu sorunlarının neden olduğu derleme hataları, haftada bir veya iki olaydan neredeyse hiç olmadı.

DÜZENLEME: https://gist.github.com/gregmac/4cfacea5aaf702365724 adresinde bunu yapan bir MSBuild görevim var (ayrıca deponun dışında depolanan bir sertifika şifresini okuyor )


12

Verisign zaman damgası url'sini şunlardan biriyle değiştirerek iyi çalışır:

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


2
Görünüşe göre zaman damgası artık trustcenter.de adresinden alınamıyor: "Symantec TC TrustCenter GmbH tarafından sağlanan Tüm Ürün ve Hizmetler artık mevcut değil. Bununla ilgili herhangi bir soru şu adrese yönlendirilmelidir: Symantec TC TrustCenter 24/7 Telefon Desteği Telefon: +1 -800-579-2848 veya + 1-520-477-3104"
Valdimar

8

VeriSign zaman damgası hizmeti ücretsizdir. Belki de güvenilirliğinin yetersiz olmasının nedeni bu olabilir; bakıma bütçe vermiyorlar!

Kesinlikle bu büyük bir problem. Kod zaman damgası hatalarından kaynaklanan başarısız derlemeler nedeniyle boşa harcanan zaman, yazılım geliştirme endüstrisi genelinde büyüyen bir sorundur. Elbette, çalışma zamanını damgalayan bir sunucu bulana kadar karmaşık bir komut dosyası yazabilirsiniz .. ama, gerçekten?

Daha iyisini talep etmeliyiz. Bu sertifikalar için çok fazla ödüyoruz.

Daha sonra, çok azının duyduğu alternatif zaman damgası sunucuları bulduğuma dikkat edin, Verisign ve Comodo'nun kapalı olduğu dönemlerde (genellikle iş günlerinde çalışma saatlerinde olur) kullanmakta sorun yok.


7

Herhangi bir zaman damgası sunucusu kullanılabilir: GlobalSign'ın sunucusunun güvenilmez olduğunu anladığım için kısa süre önce kartı veren tarafın zaman damgası sunucusundan Verisign'a geçtim. Dahası, Thawte kendi zaman damgası sunucusunu çalıştırmaz, ancak insanlara Verisign'ı kullanmalarını önerir .


1
Thawte, Verisign, yani.
StackExchange Kullanıcısı

4

Genellikle istediğiniz herhangi bir zaman damgası hizmetini kullanabilirsiniz. Çoğu CA bir zaman damgası hizmeti sunsa da. Örnekler

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 daha fazla bilgi için 2019'un arka ucunda resmi olarak EOL idi ve aşağıdaki soruya cevabım.

http-timestamp-verisign-com-komut-timstamp-dll-mevcut değil


digicert alg spesifikasyonunu arıyordu! Bu nerede belgeleniyor?
yano


3

Ben de aynı sorunu yaşadım. İmzalamaya çalıştığım bazı dosyalar için verisign sunucusuna bazen erişilemiyordu (ancak aynı yapıdaki diğer dosyalar doğru şekilde imzalandı).

Genelde yeniden denerim ve işe yarıyor ama bugün mümkün değil.

İnternette bazı gereksiz araştırmalardan sonra, http: //*.verisign.com'u güvenilir bölge sitelerine koymaya çalıştım ve işe yarıyor ... Sonunda sunucunun bir sorunu olup olmadığını ve şimdi çalışıp çalışmadığını bilmiyorum veya doğru olanı, önümüzdeki günlerde göreceğim düşünüyorum. Umarım engellenenlere yardımcı olabilir.

Sunucu yapılandırması: Windows server 2003 sp2, IE8, gelişmiş güvenlik açık.


Muhtemelen tesadüfi bulduğum için bu site basitçe boğuluyor ve çöküyor. Yoğun iş saatlerinde sık sık görebilirsiniz.
dyasta

1

Yapılarınızı imzalamak ve zaman damgalamak için signtool yerine Jsign'ı kullanabilirsiniz , alternatif zaman damgası hizmetlerine devretmeyi destekler.

Komut satırı sözdizimi şuna benzer:

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

Ayrıca deneme sayısını (ile --tsretries) ve denemeler arasındaki gecikmeyi (ile ) yapılandırabilirsiniz --tsretrywait.


JAR'ların üstesinden gelebileceğini düşündüğünüz gibi bir isimle
caduceus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.