通过 PHP Curl 连接到某个第三方服务会引发此错误:
CURL error: Received HTTP code 403 from proxy after CONNECT
Run Code Online (Sandbox Code Playgroud)
代理上的 Apache 错误日志抛出:
Connect to remote machine blocked returned by remote.service.com:59315
Run Code Online (Sandbox Code Playgroud)
我想知道如何让它发挥作用!
代理配置:
<VirtualHost *:8001>
ProxyRequests On
<Proxy *>
Order deny,allow
Deny from all
Allow from 10.
</Proxy>
ProxyVia Off
<IfModule mod_headers.c>
Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"NOI DSP COR NID CUR ADM DEV OUR BUS\""
</IfModule>
AllowCONNECT 443 1129 7934 8080 993
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
从这个日志中可以看出,允许使用域 IP:
[error] [client 10.234.9.46] proxy: Connect to remote machine blocked returned by
Run Code Online (Sandbox Code Playgroud) 我想用椭圆曲线签署和验证pdf。我得到了一些代码,但它不起作用。
创建私钥:
openssl ecparam -genkey -name secp384r1 -noout -out private.pem
Run Code Online (Sandbox Code Playgroud)
创建公钥:
openssl ec -in private.pem -pubout -out public.pem
Run Code Online (Sandbox Code Playgroud)
签名文件:
openssl dgst -ecdsa-with-SHA1 test.pdf > hash openssl dgst
openssl dgst -ecdsa-with-SHA1 -inkey private.pem -keyform PEM -in hash > signature
Run Code Online (Sandbox Code Playgroud)
验证文件:
openssl dgst -ecdsa-with-SHA1 -verify public.pem -signature signature.bin data
Run Code Online (Sandbox Code Playgroud)
签名和验证的部分不起作用。
我正在尝试为 Web 服务器(特别是 Splunk)设置证书,但我认为它们的格式不正确。我需要提供私钥文件的路径和 CA 证书。现在,我拥有 PEM 格式的两个文件(两个文件的内容都以“----BEGIN CERTIFICATE-----”开头)。但这似乎不起作用,我最好的猜测是私钥文件需要采用不同的格式。基本上,我希望它的格式可以使命令
openssl rsa -in MYFILE -check
Run Code Online (Sandbox Code Playgroud)
成功(现在,由于“无法加载私钥”而失败)。但是,我目前可以通过以下方式验证它
openssl x509 -in MYFILE -text -noout
Run Code Online (Sandbox Code Playgroud)
那么如何转换文件以便第一个命令成功呢?
我刚跑了apt-get upgrade,根据/var/log/apt/history.log,openssl已经更新到1.0.1e-2+rvt+deb7u7版本。现在我仍然打开一个 SSH 会话,但我无法打开另一个会话。我重新启动了 SSH,它返回OpenSSL version mismatch. Built against 1000105f, you have 10001080. 我试过apt-get remove openssl && apt-get install openssl没有运气。我在树莓派上运行 debian。
编辑:我应该提到我正在运行 wheezy,并使用 jessie 存储库来获取最新的 PHP5 版本。我忘记在apt-get upgrade-ing之前切换回来。
编辑2:问题解决;
apt-get update
apt-get upgrade
apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)
成功了(来源)。
所述rsautl OpenSSL的效用没有出现有一个设置,其中用于OAEP散列可以被改变。我的测试表明它只是默认为 sha1,仅此而已。
我的问题是......有没有办法改变哈希?
我用来测试它的命令:
openssl rsautl -inkey publickey.txt -encrypt -oaep -in plaintext.txt -out ciphertext.txt
Run Code Online (Sandbox Code Playgroud) 我搜索了论坛并找到了相关信息,但没有回答这个问题。我在一个带宽极度受限的环境中工作,需要创建尽可能小的 ECDSA 签名。目前,我们正在使用 OpenSSL。此外 - 由于签名数据必须具有可预测的长度 - 固定大小。
我知道 ECDSA 签名由两个整数 S 和 R 组成,位长等于曲线大小。此外,当我尝试创建签名,从cygwin wc -c命令读取大小时,似乎添加了 6-7 个字节。我已经阅读了很多地方,这种开销可能会有所不同 - 因此我们失去了签名长度的可预测性。
可能的解决方案 - 提取 S 和 R 并以二进制(?)形式传输 - 就像位流一样。我不确定这是否可行,因为我猜它失去了与 OpenSSL 库的兼容性。所以我们需要颠倒这个过程,在 OpenSSL 接受的编码中使用 S 和 R 构造一个签名。
我注意到-binaryOpenSSL中有一个选项,它给了我一个空白文件。我以为我走错了路。
我有一个加密文件并解密它我使用命令:
openssl aes-256-cbc -d -in encrypted_file -out unencrypted_file
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,会创建一个未加密的文件,完成后我必须将其删除。这意味着如果有人拿到我的电脑并使用某种数据恢复工具,他们可以获得未加密的文件。有没有办法在不创建另一个文件的情况下访问加密文件中的数据?
我一直在尝试为 Kraken 私有 API ( https://www.kraken.com/help/api )实现一个客户端,因为我遇到了一些问题,我一直在尝试访问它带有卷曲的 API。
但是,我终生无法让它工作,我想我可能没有使用正确的命令行工具来生成哈希和摘要。
访问私有 API 时,需要将以下标头添加到请求中:
API-Key = «key»
API-Sign = Message signature using HMAC-SHA512 of (URI path + SHA256(nonce + POST data)) and base64 decoded «secret»
Run Code Online (Sandbox Code Playgroud)
在命令行上,我执行以下步骤:
echo -n "123nonce=123" | openssl sha256结果: (stdin)= 353f9df92ab1d5e5afe06bb7d1bb42a8ef6654b633d94818007aeafbaf03ca3d
echo -n "/0/private/Balance353f9df92ab1d5e5afe06bb7d1bb42a8ef6654b633d94818007aeafbaf03ca3d" | openssl sha512 -hmac $(echo -n "wqtzZWNyZXTCuw==" | base64 -d)结果: (stdin)= 6f19f8f058b0e6dc835692840ccdebc1c415f00d42b75b3d3c21ef5fd43f006e30cc9b51c63aba3268a534bf68978d60d2362bffd31c8125553fb8ec41b2f64d
echo -n "6f19f8f058b0e6dc835692840ccdebc1c415f00d42b75b3d3c21ef5fd43f006e30cc9b51c63aba3268a534bf68978d60d2362bffd31c8125553fb8ec41b2f64d" | base64结果:
NmYxOWY4ZjA1OGIwZTZkYzgzNTY5Mjg0MGNjZGViYzFjNDE1ZjAwZDQyYjc1YjNkM2MyMWVmNWZk
NDNmMDA2ZTMwY2M5YjUxYzYzYWJhMzI2OGE1MzRiZjY4OTc4ZDYwZDIzNjJiZmZkMzFjODEyNTU1
M2ZiOGVjNDFiMmY2NGQ=
Run Code Online (Sandbox Code Playgroud)
curl -X POST -H "Accept: application/json" -H "API-Key: «key»" -H "API-Sign: NmYxOWY4ZjA1OGIwZTZkYzgzNTY5Mjg0MGNjZGViYzFjNDE1ZjAwZDQyYjc1YjNkM2MyMWVmNWZkNDNmMDA2ZTMwY2M5YjUxYzYzYWJhMzI2OGE1MzRiZjY4OTc4ZDYwZDIzNjJiZmZkMzFjODEyNTU1M2ZiOGVjNDFiMmY2NGQ=" …我在 binance 上遇到了以下用于 unix 的命令,我试图解压缩该命令。见这里:https : //github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md
(部分:POST /api/v1/order 的签名端点示例)
openssl dgst -sha256 -hmac
我的理解是调用 openssl 命令来生成摘要,摘要将是标准规范商定的 sha256 品种。我不明白的是-hmac国旗。它是什么,它在数学层面有什么作用?
我做了谷歌的搜索openssl -hmac和openssl dgst -hmac,但前10个结果是不无济于事给我。所以我想更有经验的用户会更好地询问。
这些文档中没有提到该标志:https : //www.mkssoftware.com/docs/man1/openssl_dgst.1.asp,所以我开始相信它可能没有加密目的。虽然我现在不确定。
我发现看起来类似于这个问题中提到的标志:https : //stackoverflow.com/questions/7285059/hmac-sha1-in-bash
我正在尝试使用openssl. 以以下示例令牌为例:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Run Code Online (Sandbox Code Playgroud)
根据RFC 7518,RS256 表示所使用的签名是“使用 SHA-256 的 RSASSA-PKCS1-v1_5”。我的理解是,以下使用方法openssl dgst可以:
# generate the key
openssl genrsa -out private.pem 2048
# generate the signature
echo 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ' | \
openssl dgst -sha256 -sign private.pem -binary | \
openssl base64 | \
tr -- '+/=' '-_ '
Run Code Online (Sandbox Code Playgroud)
但是,尝试使用 jwt.io 验证会导致无效签名。此外,使用 jwt.io 使用相同的私钥生成签名会产生完全不同的签名。
我究竟做错了什么?是否openssl dgst签署此令牌的正确方法是什么?