标签: openssl

Apache 代理在连接到第三方时抛出错误

通过 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)

apache-http-server proxy php curl openssl

7
推荐指数
1
解决办法
5096
查看次数

OpenSSL ECDSA 签名和验证文件

我想用椭圆曲线签署和验证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)

签名和验证的部分不起作用。

cryptography openssl

7
推荐指数
2
解决办法
3万
查看次数

如何将证书转换为私钥?

我正在尝试为 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)

那么如何转换文件以便第一个命令成功呢?

ssl openssl

7
推荐指数
2
解决办法
3万
查看次数

由于 OpenSSL 版本不匹配,无法打开 SSH 会话

我刚跑了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)

成功了(来源)。

ssh debian openssl apt-get

7
推荐指数
1
解决办法
6044
查看次数

对 OAEP 使用 sha1 以外的散列与 OpenSSL/CLI

所述rsautl OpenSSL的效用没有出现有一个设置,其中用于OAEP散列可以被改变。我的测试表明它只是默认为 sha1,仅此而已。

我的问题是......有没有办法改变哈希?

我用来测试它的命令:

openssl rsautl -inkey publickey.txt -encrypt -oaep -in plaintext.txt -out ciphertext.txt
Run Code Online (Sandbox Code Playgroud)

rsa openssl

6
推荐指数
1
解决办法
5853
查看次数

我能否以位形式从 ECDSA 签名中提取 R 和 S,反之亦然?

我搜索了论坛并找到了相关信息,但没有回答这个问题。我在一个带宽极度受限的环境中工作,需要创建尽可能小的 ECDSA 签名。目前,我们正在使用 OpenSSL。此外 - 由于签名数据必须具有可预测的长度 - 固定大小。

我知道 ECDSA 签名由两个整数 S 和 R 组成,位长等于曲线大小。此外,当我尝试创建签名,从cygwin wc -c命令读取大小时,似乎添加了 6-7 个字节。我已经阅读了很多地方,这种开销可能会有所不同 - 因此我们失去了签名长度的可预测性。

可能的解决方案 - 提取 S 和 R 并以二进制(?)形式传输 - 就像位流一样。我不确定这是否可行,因为我猜它失去了与 OpenSSL 库的兼容性。所以我们需要颠倒这个过程,在 OpenSSL 接受的编码中使用 S 和 R 构造一个签名。

我注意到-binaryOpenSSL中有一个选项,它给了我一个空白文件。我以为我走错了路。

openssl dsa

6
推荐指数
1
解决办法
9522
查看次数

如何在 Linux 中不创建未加密文件的情况下读取 openssl aes-256-cbc 加密文件?

我有一个加密文件并解密它我使用命令:

 openssl aes-256-cbc -d -in encrypted_file -out unencrypted_file
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,会创建一个未加密的文件,完成后我必须将其删除。这意味着如果有人拿到我的电脑并使用某种数据恢复工具,他们可以获得未加密的文件。有没有办法在不创建另一个文件的情况下访问加密文件中的数据?

encryption openssl

6
推荐指数
1
解决办法
1965
查看次数

用于访问经过身份验证的 Kraken API 的 cURL 示例

我一直在尝试为 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=" …

bash curl api openssl base64

6
推荐指数
1
解决办法
4298
查看次数

打开 SSL 中 -hmac 标志的说明

我在 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 -hmacopenssl dgst -hmac,但前10个结果是不无济于事给我。所以我想更有经验的用户会更好地询问。

更新:

这些文档中没有提到该标志:https : //www.mkssoftware.com/docs/man1/openssl_dgst.1.asp,所以我开始相信它可能没有加密目的。虽然我现在不确定。

我发现看起来类似于这个问题中提到的标志:https : //stackoverflow.com/questions/7285059/hmac-sha1-in-bash

openssl

6
推荐指数
1
解决办法
7564
查看次数

使用 openssl 生成 JWT RS256 签名

我正在尝试使用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签署此令牌的正确方法是什么?

signature rsa openssl

6
推荐指数
1
解决办法
2988
查看次数

标签 统计

openssl ×10

curl ×2

rsa ×2

apache-http-server ×1

api ×1

apt-get ×1

base64 ×1

bash ×1

cryptography ×1

debian ×1

dsa ×1

encryption ×1

php ×1

proxy ×1

signature ×1

ssh ×1

ssl ×1