- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 CloudFront 提供的 S3 存储桶创建一个签名 URL,并且正在关注 this example用 linux OpenSSL 来做。以下内容几乎直接来自示例:
local -r signature=$(
openssl sha1 -sign "files/pk-${key_pair_id}.pem" policy.json \
| openssl base64 -A \
| tr -- '+=/' '-_~'
)
此计算的签名与 PHP example code 计算的签名不匹配,这应该是相同的。
function rsa_sha1_sign($policy, $private_key_filename) {
$signature = "";
// load the private key
$fp = fopen($private_key_filename, "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
// compute signature
openssl_sign($policy, $signature, $pkeyid);
// free the key from memory
openssl_free_key($pkeyid);
return $signature;
}
function url_safe_base64_encode($value) {
$encoded = base64_encode($value);
// replace unsafe characters +, = and / with
// the safe characters -, _ and ~
return str_replace(
array('+', '=', '/'),
array('-', '_', '~'),
$encoded);
}
$key_pair_id = "A...X";
$private_key_filename = "files/A...X.pem"
$signature = rsa_sha1_sign($policy, $private_key_filename);
$signature = url_safe_base64_encode($signature);
假设 $policy
包含有效的 JSON,它与 bash 示例中使用的 policy.json
文件的内容完全匹配。
PHP 示例计算了一个有效的签名,我可以确认它可以用于创建一个有效的签名 URL 来访问受限内容。
最佳答案
正如 Mike 指出的那样,Bash 和 PHP 的代码片段计算相同的签名以匹配输入。
我测试中的差异是由于一个输入在 JSON 输入的末尾包含一个换行符,而另一个则没有。当输入真正逐字节相同时,片段会生成匹配的签名。
关于php - 使用 openssl sha1 -sign 和 PHP 的 openssl_sign 时,CloudFront 签名 URL 的签名不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61374643/
在 JAVA 代码(BouncyCaSTLe lib)中,我们使用私钥创建签名。代码如下。我们的任务是使用 PHP 获得相同的签名——使用相同的私钥。尝试使用 PHP 代码,例如 openssl_si
我在使用 openssl 时遇到问题。为了更好地查明问题,我做了两件事;我将代码缩减为单个测试页(我已从 php.net 中删除)。在问题仍然存在后,我将 tat 代码上传到服务器。服务器按预期工作,
这是使用 2048 位 dsa 私钥对数据进行签名的 php 演示代码: $priv_key = '-----BEGIN DSA PRIVATE KEY----- MIIDVQIBAAKCAQEA/u
ColdFusion 的 PHP openssl_sign() 等效项是什么?这在 PHP 中完美运行,但我需要在 CFML 中执行此操作: {'private_key'}; //{Base64url
我正在尝试使用 PHP-DKIM 发送 DKIM 签名的电子邮件。它有点旧,所以我不得不改变一些东西,但这让我很困惑: Warning: openssl_sign() [function.openss
我正在为用 PHP 编写的软件编写 OS X 客户端。该软件使用简单的 RPC 接口(interface)来接收和执行命令。 RPC 客户端必须对他发送的命令进行签名,以确保没有 MITM 可以修改任
我正在(慢慢地)学习 Node JS 并尝试使用它来代替我拥有的 PHP 脚本。我需要对使用 SSL 组装的字符串进行签名,以传递到 curl 请求。 在 PHP 中,我是这样做的: $sig = '
各位! 我有一些 PHP 代码来签署一些文本,它工作正常。我需要在 actionscript 3 上有等效的这段代码。我需要你的帮助。 $privateKeyPath = "private.key";
openssl_sign 正在返回签名字符串但打印此错误。我正在使用椭圆曲线键 Warning: openssl_sign() [function.openssl-sign]: key type no
我正在尝试为 CloudFront 提供的 S3 存储桶创建一个签名 URL,并且正在关注 this example用 linux OpenSSL 来做。以下内容几乎直接来自示例: local -
我是一名优秀的程序员,十分优秀!