На шаге 3 размещение открытого ключа неверно.Правильнее было бы: https://amp.example.com/.well-known/amphtml/apikey.pub
Кажется, проблема с проверкой возникла на шаге 4, поскольку в одной строке вызывается две команды, которые генерируют неверный вывод.
Решениеэто разбить его на 2 части:
echo -n >url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&_ts=1526997689'
cat url.txt | openssl dgst -sha256 -sign private-key.pem >signature.bin
или добавить & между двумя командами:
echo -n > url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&_ts=1526997689' & cat url.txt | openssl dgst -sha256 -sign private-key.pem > signature.bin
Полная последовательность становится примерно такой:
openssl genrsa 2048 > private-key.pem
openssl rsa -in private-key.pem -pubout > public-key.pem
echo -n > url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&_ts=1526997689'
cat url.txt | openssl dgst -sha256 -sign private-key.pem > signature.bin
openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
и вывод выглядит следующим образом:
openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
Verified OK
Еще одна пара вещей заключается в том, что после генерации подписи ее необходимо добавить к URL-адресу в параметре amp_url_signature
, используя сеть -обезопасный вариант Base64 .
Наконец, обязательно проверьте раздел документации параметры в документации и сгенерируйте URL-адреса в соответствии с AMP Cache URL Format .