时间戳签名库及本地Demo服务器,可倒填时间制造有效签名工具

网络工具 2020-04-05 18:49:51

时间戳签名库及本地Demo服务器,可倒填时间制造有效签名工具

原本没想要发布这个单独的时间戳程序,但是有很多人问我有关时间戳的问题,因此就把原来Java写的代码翻译到CSharp,做了一个时间戳签名库和它的Demo。

自建时间戳服务器只需要一张自签名的时间戳证书和对应的私钥和证书链。
时间戳证书必须是X509v3证书,包含标记critical的ExtendedKeyUsage属性,ExtKU只允许证书用于时间戳签名。
证书文件如果不是自签名的,则还需要包含证书链。子证书在最上面,CA证书在最下面,就像部署SSL证书链那样操作。
私钥文件必须使用PKCS1编码保存,PKCS8无法识别。
Github和Release中都有从我PKI中签发出的时间戳证书,可以作为一个证书的样板。
虽然我的证书默认不受信,但是我还是不希望你们滥用它。

本地时间戳服务器的地址是 http://localhost/TSA/ 注意!这个Demo真的只是一个本地的服务,不能作为广泛使用的时间戳服务器。
因为我设置了只能从localhost访问,局域网内其他电脑访问不到这个时间戳服务。甚至用127.0.0.1或者::1都不可以!
Demo可以和IIS共用80端口,如果有Apache或者Nginx这类服务器绑定了80端口,那么Demo就无法正常启动,表现为要求以管理员身份运行。

程序使用HttpListener组件实现简单的HTTP服务,因此必须要求以管理员身份运行
程序成功运行后,这个地址支持 Authenticode 和 RFC3161 时间戳,也就是说,在微软signtool中使用 /t "" 或者 /tr "" 都是可以的,可以根据自己的需要打不同协议的时间戳 (Authenticode时间戳兼容性比较好,支持XP)