我已经在这里发布了类似的问题,但我意识到我的问题可能更多地与 x509 证书有关,而不是与 JWS 一般有关。
事情是这样的,我对 JWS 还很陌生,Apple 现在将它们作为服务器到服务器通信的一部分进行传输。我试图了解如何完全保证JWS的有效性,因为据我了解,签名验证仅意味着整个JWS没有被篡改。我不知道如何实际验证此有效负载确实来自受信任的来源(又名Apple)。
这是我到目前为止所得到的(PHP):
//1. explode jws and decode what's needed
$components = explode('.', $jws);
$headerJson = json_decode(base64_decode($components[0]),true);
$signature = base64Url_decode($components[2]);
//2. extract all certificates from 'x5c' header
foreach ($headerJson['x5c'] as $x5c){
$c = '-----BEGIN CERTIFICATE-----'.PHP_EOL;
$c .= chunk_split($x5c,64,PHP_EOL);
$c .= '-----END CERTIFICATE-----'.PHP_EOL;
$certificates[] = openssl_x509_read($c);
}
//3. verify validity of certificate chain (each one is signed by the next, except root cert)
for($i = 0; $i < count($certificates); $i++){ …Run Code Online (Sandbox Code Playgroud) 这是有史以来的第一个问题,所以请允许我:)我过去三天一直在网上,试图找到一种在Windows机器上获得以下结果的方法。
我已经发现了很多用于macOS和Unix的东西,但是对于Windows却只有一点点。我正在运行xampp,最终我试图使它通过cURL / PHP发送http / 2请求。到目前为止,我所收集的是我需要使用某些库来编译cURL,例如openssl(至少1.0.2),启用了http / 2的libcurl和nghttp2。我觉得我已经很接近了,但是我只是缺少一些步骤。
到目前为止,我所做的是:
任何建议或指针将不胜感激!感谢大伙们 :)