我们在Visual Studio 2010中有一个项目,它在后期构建事件中运行批处理文件.该批处理从Microsoft SDK调用signtool.exe来对二进制文件进行签名和时间戳.
然而,时间戳服务器(我们使用http://timestamp.verisign.com/scripts/timstamp.dll)由于某种原因往往不可靠,有时会失败.这导致构建失败.
我们实现了更高级的批处理脚本(基于此代码),拆分签名和时间戳,并允许重试时间戳操作(如果失败).
以下是批处理脚本(signfile.bat)的简化版本:
@echo off
REM sign the file...
signtool.exe /f Authenticode.pfx /p PASS %1
if %errorlevel% neq 0 exit /b %errorlevel%
set timestamp_server=http://timestamp.verisign.com/scripts/timstamp.dll
for /L %%a in (1,1,10) do (
REM try to timestamp the file...
signtool.exe timestamp /t %timestamp_server% %1
if errorlevel 0 if not errorlevel 1 GOTO succeeded
REM wait 2 seconds...
ping -n 2 127.0.0.1 > nul
)
REM return an error code...
echo signfile.bat exit code is …Run Code Online (Sandbox Code Playgroud) build-process code-signing visual-studio-2010 errorlevel timestamping
我正在一个项目中工作,以便从文件Linux时间戳记中提到的用于TCP套接字的NIC获取接收和传输 时间戳.但所有文档和测试编码都是针对UDP套接字完成的.但我正在获取NIC的传输时间戳,而不是获取接收TCP数据包的时间戳.
我的界面支持以下时间戳
Time stamping parameters for enp4s0:
Capabilities:
hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)
software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE)
hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE)
software-receive (SOF_TIMESTAMPING_RX_SOFTWARE)
software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 3
Hardware Transmit Timestamp Modes:
off (HWTSTAMP_TX_OFF)
on (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
none (HWTSTAMP_FILTER_NONE)
all (HWTSTAMP_FILTER_ALL)
Run Code Online (Sandbox Code Playgroud)
我启用网卡时间戳后bind()用ioctl(sockfd, SIOCSHWTSTAMP, &net_device);用
memset(&net_device, 0, sizeof(net_device));
strncpy(net_device.ifr_name, interface_name, sizeof(net_device.ifr_name));
net_device.ifr_data = (void *)&tstconfig;
memset(&tstconfig, 0, sizeof(tstconfig));
tstconfig.tx_type = HWTSTAMP_TX_OFF;
tstconfig.rx_filter = HWTSTAMP_FILTER_ALL;
Run Code Online (Sandbox Code Playgroud)
然后启用NIC中的时间戳 setsockopt()
int opt= 0;
opt |= SOF_TIMESTAMPING_RX_HARDWARE;
opt |= …Run Code Online (Sandbox Code Playgroud) 我们刚刚从SHA-1切换到SHA-2代码签名证书.(作为背景信息,我们使用COMODO代码签名证书在Windows上使用signtool.exe签署.exe和.xap文件.)我们使用经过认证的时间戳来执行此操作,以确保Windows在代码签名证书后始终信任代码签名到期.
现在我注意到使用http://timestamp.comodoca.com/authenticode时,时间戳证书仍然是SHA-1证书.(详细信息:df946a5 ...主题'CN = COMODO时间戳签名者,O = COMODO CA Limited,L = Salford,S =大曼彻斯特,C = GB'.)
(在Windows上,可以通过签名.exe查看该证书,然后在其Explorer Properties对话框中转到Digital Signatures选项卡,选择签名并单击Details,然后在Digital Signature Details对话框中单击counter签名并单击Details,然后在第二个"数字签名详细信息"对话框中单击"查看证书".如果"签名哈希算法"为"sha1",则证书为SHA-1证书.)
这会是一个问题吗? 换句话说,在我们当前的代码签名证书过期之后,并且在Microsoft Windows将SHA-1视为破坏的算法(最迟在2020年)之后,我们当前的签名是否仍然可信?或者Windows会说,"时间戳在代码签名证书的有效范围内,但时间戳是用SHA-1证书签名的,所以我不相信时间戳,因此我不相信这个签名"?
我们可以/应该使用其他服务吗?(不是Verisign的http://timestamp.verisign.com/scripts/timstamp.dll,因为他们还使用SHA-1时间戳证书,即6543992 ...)
请注意,此问题仅适用于Windows Server 2008 SP2
我开发了一个Windows应用程序.在分发之前,我已使用SHA1和SHA256对其进行了签名和时间戳.此应用程序由多个DLL组成.我在构建过程中签署每个DLL.我使用过VeriSign的证书.在执行时,启动应用程序时,它会验证每个DLL的签名和时间戳,以确保使用WinVerifyTrust API 完整性.验证期间我收到"E_CERT_EXPIRED - 签名者证书已过期"错误.
此外,我无法在可执行文件的属性页中看到时间戳细节.请看下面 -
现在,该证书已过期但根据此SO文章代码签名证书到期时会发生什么?.可执行文件应该完美运行没有任何问题.
我还检查了这个KB怀疑原因,但已经应用了与此KB相关的修复.任何人都可以分享更多的亮点吗?
code-signing timestamping windows-server-2008 code-signing-certificate verisign
我想为我的时间戳服务创建一个tsa证书.
首先,我创建一个根证书
openssl genrsa -out tsaroot.key 4096 -config openssl.cnf
openssl req -new -x509 -days 1826 -key tsaroot.key -out tsaroot.crt -config openssl.cnf
Run Code Online (Sandbox Code Playgroud)
然后我创建了tsa证书
openssl genrsa -des3 -out tsa.key 4096 -config openssl.cnf
openssl req -new -key tsa.key -out tsa.csr -config openssl.cnf
openssl x509 -req -days 730 -in tsa.csr -CA tsaroot.crt -CAkey tsaroot.key -set_serial 01 -out tsa.crt
openssl pkcs12 -export -out tsa.p12 -inkey tsa.key -in tsa.crt -chain -CAfile tsaroot.crt
Run Code Online (Sandbox Code Playgroud)
在我的openssl.cnf文件中,我添加以下行:
extendedKeyUsage = critical,timeStamping
Run Code Online (Sandbox Code Playgroud)
Howerver,创建的证书似乎不包括extendeKeyUsage(当我尝试用充气城堡阅读它时,我得到了"证书必须具有ExtendedKeyUsage扩展名."例外
如何生成有效的tsa证书(包含正确的extendedKeyUsage值)?
谢谢
我正在编写一个 bash 脚本,仅当远程时间戳与本地时间戳不同时,该脚本才会从 FTP 站点提取文件。放置文件后,它通过 samba (smbclient) 将文件复制到其他 3 台计算机。
一切正常,但即使 wget -N ftp://insertsitehere.com返回远程上的文件不是较新的值,文件也会复制。检查脚本输出的最佳方法是什么,以便仅在从 FTP 提取新版本时才进行复制?
理想情况下,我希望复制到计算机以保留时间戳,就像 wget -N 命令一样。
这是我所拥有的示例:
#!/bin/bash
OUTDIR=/cats/dogs
cd $OUTDIR
wget -N ftp://user:password@sitegoeshere.com/filename
if [ $? -eq 0 ]; then
HOSTS="server1 server2 server3"
for i in $HOSTS; do
echo "Uploading to $i..."
smbclient -A /root/.smbclient.authfile //$i/path -c "lcd /cats/dogs; put fiilename.txt"
if [ $? -eq 0 ]; then
echo "Upload to $i successful..."
else
echo "There was an issue uploading to host $i..."
fi …Run Code Online (Sandbox Code Playgroud) 任何人都可以帮助我理解签名时间戳时使用的过程和Java API.
我需要使用TSA URL签名文件并对其加盖时间戳" http://timestamp.globalsign.com/scripts/timstamp.dll使用Java API ".
我能够使用java.security API对文件进行签名,但无法为其加时间戳.
我有兴趣使用自签名证书对我的 Silverlight XAP 进行签名,以便它可以自动更新。我还没有尝试过,但我想我可以使用我在 StackOverflow 上找到的这个问题/答案轻松创建证书。
但是我不清楚时间戳服务器的作用是什么,我可以使用公司的时间戳服务器(例如,来自 Comodo 的),即使我没有从他们那里购买证书,而是自签名我的证书?
certificate self-signed timestamping out-of-browser silverlight-oob
我在模块中有一个读取功能.
如果我同时执行该功能,我需要为其加时间戳.
我该怎么做呢?
timestamping ×9
code-signing ×3
certificate ×2
linux ×2
bash ×1
errorlevel ×1
ftp ×1
java ×1
linux-kernel ×1
openssl ×1
python ×1
rfc3161 ×1
security ×1
self-signed ×1
sha1 ×1
sha2 ×1
sockets ×1
tcp ×1
verisign ×1
wget ×1