Я пытаюсь завершить процесс запроса / подтверждения метки времени.
Итак, шаг 1 создайте отметку времени request.php
require_once "TrustedTimestamps.php"; //i'm using David Müller script to manage openssl trought php
$signature_filename="example.txt";
$sha256 = hash_file('sha256', 'example.jpg');
$tsa_url = "https://tsa.exampleserver/tsa";
$requestFile = TrustedTimestamps::createRequestfile($sha256,'sha256');
$signature = TrustedTimestamps::signRequestfile($requestFile, $tsa_url);
file_put_contents($signature_filename, base64_decode($signature["response_string"]));
Шаг 2 подтверждение временной отметки validate.php
require_once "TrustedTimestamps.php";
$signature_filename="example.txt";
$sha256 = hash_file('sha256', 'example.jpg');
$tsa_url = "https://tsa.exampleserver/tsa";
$tsa_cert_file="timestampcertificate.crt";
$response_time="1561989750"; //extracted from the response
$content_file=file_get_contents($signature_filename);
$base64_response_string=base64_encode($content_file);
TrustedTimestamps::validate($sha256, $base64_response_string, $response_time, $tsa_cert_file,'sha256');
Шаг 1, кажется, работает правильно, я получаю строку с меткой времени, которую я могу проверить как отдельную метку времени на сайте сервера tsa (у них есть веб-страница с формой для загрузки метки времени и исходного изображения).
Мне нужно завершить процесс проверки автоматически, без веб-страницы.
Шаг 2 всегда возвращает ошибку:
TS_VERIFY_CERT:certificate verify error:unable to get local issuer certificate,
Кажется, я не могу проверить свой токен с помощью файла сертификата tsa. Я получил этот файл от владельца сервера tsa, мне сказали, что это файл, в котором подписаны метки времени. Они не могут сказать мне больше, и я не могу попросить помощи, поэтому мой вопрос, почему я не могу проверить этот токен?
команда open ssl, которую я использовал для проверки:
"openssl ts -verify -digest ".escapeshellarg($hash)." -sha256 -in ".escapeshellarg($responsefile)." -CAfile ".escapeshellarg($tsa_cert_file);
-CAfile
- это ключ к проблеме, я думаю, но я новичок в openssl и метках времени. В документации openssl очень мало деталей, и во многих примерах я видел только один файл для -CAfile
.
Может быть, моя ошибка заключается в том, чтобы передать сертификат напрямую по методу проверки?