A assinatura de URL protege os recursos do CDN contra hotlinking e acesso não autorizado. O método Type C signing incorpora um hash MD5 e um timestamp hexadecimal diretamente na URL, permitindo que o servidor CDN verifique a autenticidade e a expiração antes de entregar o recurso.
Para escolher o método de assinatura adequado ao seu cenário, consulte Visão geral da assinatura de URL .
Como funciona
O Type C signing incorpora dois valores na URL — um hash MD5 da requisição e um timestamp hexadecimal — para que o servidor CDN possa verificar tanto a autenticidade quanto a expiração da URL antes de servir o recurso.
Fluxo completo, da assinatura até a entrega do recurso:
O servidor de assinatura gera um timestamp UNIX e calcula um hash MD5 a partir da chave privada, do caminho do arquivo e do timestamp.
A aplicação incorpora o hash e o timestamp na URL (usando o formato 1 ou o formato 2, descritos a seguir).
O cliente envia uma requisição com a URL assinada.
O servidor CDN verifica se a URL expirou. Em caso positivo, retorna HTTP 403.
Caso a URL ainda esteja válida, o servidor CDN recalcula o hash MD5 com os mesmos dados de entrada e o compara com o hash presente na requisição.
Havendo correspondência, o servidor CDN remove os parâmetros de assinatura da URL — o que melhora a taxa de acerto de cache e reduz o tráfego de retorno à origem — e entrega o recurso.
Formatos de URL
O Type C signing aceita dois formatos de URL. Ambos carregam os mesmos dois campos: md5hash e timestamp.
Formato 1 — hash e timestamp incorporados no caminho:
http://DomainName/{<md5hash>/<timestamp>}/FileName
Formato 2 — hash e timestamp como parâmetros de consulta:
http://DomainName/FileName?{KEY1=<md5hash>&KEY2=<timestamp>}
O conteúdo entre {} representa as informações criptografadas adicionadas à URL padrão.
Referência de campos
|
Campo |
Descrição |
|
|
Nome de domínio do seu site CDN. |
|
|
Chave de criptografia personalizada. Deve ter entre 16 e 32 caracteres e pode conter letras maiúsculas, letras minúsculas e dígitos. |
|
|
Caminho usado na busca real à origem. Deve começar com |
|
|
Momento em que o servidor de assinatura gera a URL assinada, expresso como timestamp UNIX em formato hexadecimal. Um timestamp UNIX é um inteiro decimal positivo de 10 dígitos que conta os segundos desde 00:00:00 UTC de 1º de janeiro de 1970, independentemente do fuso horário. |
|
|
String hexadecimal de 32 caracteres em letras minúsculas, calculada com o algoritmo MD5. A string de entrada ( |
**Como calcular o md5hash:**
sstring = Privatekey + URI + timestamp (URI is the relative path of the requested object, without query parameters — for example, /FileName)
md5hash = md5sum(sstring)
Como o período de validade funciona:
A URL assinada expira quando timestamp + validity period é anterior ao horário atual. O período de validade corresponde ao valor configurado para o seu domínio CDN. Para estender a vida útil de uma URL além desse limite, defina timestamp como UNIX timestamp + extension duration ao gerar a URL. O tempo de expiração efetivo passa a ser timestamp + configured validity period.
Lógica de autenticação
Ao receber uma requisição, o servidor CDN:
-
Verifica se
timestamp + validity periodé anterior ao horário atual.Expirado: retorna HTTP 403.
Não expirado: prossegue para a verificação do hash.
Constrói a mesma
sstringa partir dePrivatekey,URIetimestamp, e calcula o própriomd5hash.-
Compara o hash calculado com o
md5hashpresente na requisição.Correspondência: a autenticação é bem-sucedida. O servidor remove os parâmetros de assinatura da URL e retorna o recurso.
Sem correspondência: retorna HTTP 403.
Após a autenticação bem-sucedida, o servidor CDN usa a URL limpa (sem parâmetros de assinatura) tanto para a chave de cache quanto para a busca na origem:
|
Etapa |
URL |
|
Chave de cache |
|
|
Busca na origem |
|
A remoção dos parâmetros de assinatura permite reutilizar respostas em cache entre diferentes requisições, o que melhora a taxa de acerto de cache e reduz o tráfego de retorno à origem.
Exemplo
O exemplo a seguir demonstra o cálculo completo do Type C signing.
Dados de entrada:
|
Campo |
Valor |
|
Requisição de origem |
|
|
|
|
|
|
|
Etapa 1: Construa a string de entrada.
sstring = aliyuncdnexp1234/test.flv55CE8100
Etapa 2: Calcule o hash MD5.
md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100)
= a37fa50a5fb8f71214b1e7c95ec7a1bd
Etapa 3: Monte a URL assinada.
Formato 1:
http://domain.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv
Formato 2:
http://domain.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100
Quando o cliente envia a requisição, o servidor CDN recalcula o hash MD5 com os mesmos dados de entrada. Se o resultado corresponder a a37fa50a5fb8f71214b1e7c95ec7a1bd e a URL não tiver expirado, a autenticação é bem-sucedida e o recurso é retornado.
Próximos passos
Visão geral da assinatura de URL — compare os quatro métodos de assinatura e escolha o mais adequado ao seu cenário
Configure a assinatura de URL — ative a assinatura de URL para o seu domínio CDN no console