我試圖讓我的內容有時間戳,所以我知道它何時更改。首先我使用了一個shell腳本,但我想在我的python程序中實現它。 shell腳本現在工作正常,但我不能讓python版本爲我工作。 這是工作外殼版本python rfc3161驗證失敗,但openssl驗證無誤
in_file='test_content'
out_file="${in_file}.tsr"
ts_server='http://time.certum.pl/'
openssl ts -query -data "$in_file" -sha1 -cert | curl -o "$out_file" -sSH 'Content-Type: application/timestamp-query' --data-binary @- "$ts_server"
openssl ts -verify -data "$in_file" -in "$out_file" -CAfile "/usr/lib/ssl/certs/Certum_Trusted_Network_CA.pem"
openssl ts -reply -in "$out_file" -text
我試着用rfc3161 package模仿這一點,但如預期的驗證不走了。這是Python代碼
import rfc3161
cert = file('/usr/lib/ssl/certs/Certum_Trusted_Network_CA.pem').read()
rt = rfc3161.RemoteTimestamper('http://time.certum.pl/', certificate=cert)
data_to_sign = file('test_content').read()
print rt.timestamp(data=data_to_sign)
>>> (False, 'Bad signature')
我不知道什麼是錯誤的,因爲這兩個腳本應該做同樣的事情。有人可以給我一個關於python版本有什麼問題的線索嗎?
你是對的我需要先驗證證書然後驗證TSA答案。我會將其添加到原始帖子中。謝謝 – melanholly