How to refresh AMP Cache?

1k Views Asked by At

I have an article page with AMP (on an subdomain). Now I have made a few changes in an article. How can I reload this cached AMP (sub-)page?

Normal Version: https://www.example.com/this-is-a-article-999

AMP-Version: https://amp.example.com/this-is-a-article-999

i do following steps:

1. I have installed openssl on my server

2. Then I generated the two keys

openssl genrsa 2048 > private-key.pem

openssl rsa -in private-key.pem -pubout >public-key.pem

3. I copied the public key to the subdomain (= AMP page) and renamed it to "apikey.pub"

So the public key is accessible over the browser: https://amp.example.com/apikey.pub

4. Then I have created the update-cache request as follow:

get a timestamp with "date +%s"

echo -n >url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&amp_ts=1526997689' cat url.txt | openssl dgst -sha256 -sign private-key.pem >signature.bin

5. I used the public key to verify the signature:

openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt

I get the followind Error: ==> Verification Failure (!!!)

1

There are 1 best solutions below

0
On

On step 3, the placement of the public key is wrong. The correct one would be: https://amp.example.com/.well-known/amphtml/apikey.pub

The issue with the verification seems to be on step 4, as there are 2 commands being invoked on single line and generating invalid output.

The solution is to break it in 2 parts:

echo -n >url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&amp_ts=1526997689' 
cat url.txt | openssl dgst -sha256 -sign private-key.pem >signature.bin

or to add an & between the 2 commands:

echo -n > url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&amp_ts=1526997689' & cat url.txt | openssl dgst -sha256 -sign private-key.pem > signature.bin

The full sequence becomes something like this:

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&amp_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

and the output is the following:

openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
Verified OK

Another couple of things is that after generating the signature, it must be appended to the URL on the amp_url_signature parameter, using a web-safe variant of Base64.

At last, make sure to check the parameters section of the documentation and generating the URLs according to the AMP Cache URL Format.