问题标签 [php-openssl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
403 浏览

php - 在 php 中使用 openssl_private_encrypt 加密二进制文件

我想使用 Symfony 框架用私钥加密。它适用于非二进制文件,但不适用于二进制文件。

0 投票
0 回答
1470 浏览

php - Openssl_pkey_get_private 在开发服务器上总是返回 false

我正在尝试使用我的私钥生成数据签名。

这段代码在我的本地机器上工作,而openssl_pkey_get_private在我的开发服务器上总是返回 false,所以它失败了。我明白了openssl_sign(): supplied key param cannot be coerced into a private key。服务器有什么问题吗?我需要修改我的任何服务器配置吗?

0 投票
2 回答
2352 浏览

mysql - Google Cloud SQL SSL 未通过对等证书验证

我在 PHP 5.6 上使用 MySQL 时遇到问题,在 PHP 上调试 PHP、OpenSSL、MySQLnd 驱动程序并在 Ubuntu 14.04 机器上试用 mysql_client 三天后,我得出结论:Google Cloud SQL SSL 证书不起作用在 PHP 5.6 及更高版本上。

首先,Google Cloud 是一项很棒的服务,现代加密技术在整个 Google 生态系统中得到实施。但是,由于一个小问题,我无法使用它:Google Cloud SQL SSL Server 证书具有不可能的通用名称。

Google Cloud SQL Server(或对等)证书的通用名称 (CN) 类似于:

更糟糕的是,从 PHP 5.6 开始,所有加密的客户端流都将通过强制对等证书验证。(链接:PHP 5.6.x 中的 OpenSSL 更改)。我使用 PHP 数据对象 (PDO) 扩展,它使用本机驱动程序 MySQLnd 来处理所有 MySQL 业务。这使用原生 PHP 流来处理这些连接。

我一直在查看 PHP 上的 MySQLnd 源代码(链接:GitHub 上的 MYSQLnd 驱动程序代码),MySQLnd 配置选项以尝试禁用此特定 MySQLND 上的 SSL 对等验证代码。无济于事。

因此,如果我需要在 PHP 5.6 上使用 SSL 进行 MySQL 连接,我该怎么办?

非常感谢您的回复!

0 投票
2 回答
1422 浏览

php - openssl_random_pseudo_bytes php 函数

输出openssl_random_pseudo_bytesphp 函数不可读的字符。

我使用这个函数来生成一个唯一的字符串。

输出如下内容:

0 投票
2 回答
4991 浏览

php - 验证上传的文件是有效的 PEM 文件

我试图找出一种有效/优雅的方法来验证用户上传的文件是否是有效的 pem 文件,而不依赖于验证扩展名。有人做到这一点或有任何想法吗?

0 投票
4 回答
7856 浏览

php - 使用 openSSL 在 PHP 中加密(大)文件

我正在尝试使用 AES 加密 PHP 中的(大)文件,并研究了使用 Mcrypt 和 OpenSSL,问题是到目前为止我发现的所有解决方案都只加密字符串,而我试图加密的文件会触发最大PHP的内存限制(不幸的是不能设置得更高),我将如何实现这一点?

0 投票
1 回答
4564 浏览

php - 获取 PHP openssl_encrypt 方法/模式列表

我开始使用 PHP 的openssl_encrypt方法。第二个参数是加密模式。我在哪里可以找到所有可能的方法/模式的列表?

0 投票
3 回答
6927 浏览

php - 加密安全的唯一 ID

我想使用 php 生成加密安全的唯一 uuid。

uniqid() 提供唯一但不安全的 ID,而 openssl_random_pseudo_bytes() 提供安全但不唯一的 ID。两者的结合(以下代码)是正确的方法还是有更好的解决方案?

0 投票
1 回答
1112 浏览

php - 用 C/C++ 生成的 RSA OpenSSL 密钥可以用 PHP 解密吗?

在许多情况下,安全软件涉及(桌面)应用程序和 Web 界面之间的交互。对于(RSA)非对称加密,我们使用 OpenSSL 的C 库(目前版本 1.0.2d),我们使用 openssl PHP 库

所有标准的东西:

  • 私有加密 (C++) 数据和公共解密 (PHP)
  • 公共加密 (C++) 数据和私有解密 (PHP)

作品。反之亦然:PHP -> C++ 和 C++ -> PHP

此外,使用 PHP 生成加密私钥并使用 C/C++ 解密该密钥也可以。但不是相反:我想用 PHP 解密一个用 C++ 生成和加密的私钥。注意:这与使用密钥加密/解密数据不同。

问题似乎是 C OpenSSL 加密私钥的方式。仅仅知道加密密钥的算法是不够的(在我们的例子中是 aes-256-cbc)。密码也被拉伸了。OpenSSL 加密密钥的方式随着时间的推移发生了变化。我将举例说明它现在的样子。

使用 OpenSSL C/C++ 生成的私钥的部分标头如下所示:

而使用 openssl PHP 生成的 pem 编码私钥的部分标头如下所示:

我曾尝试使用一些 PHP 扩展,例如phpseclib,但我仍然无法在 PHP 程序中使用由 C OpenSSL 生成的私钥。公钥没有加密,它们可以在两种语言之间毫无问题地交换。

为了使用 C OpenSSL 生成 RSA 密钥,我们使用 EVP_PKEY 结构。

作者于 2015 年 8 月 12 日编辑

作为对 neubert 的回复,我使用 OpenSSL 实用程序“openssl genpkey”生成了一个加密的私有 RSA 密钥:

所以密钥长度为 512 位,密码为“1234”。

为了获得密钥的未加密形式,我使用了“openssl pkey”:

请注意,在 Windows 上,openssl 可执行文件称为“openssl.exe”。

以下是关键:

0 投票
1 回答
1081 浏览

php - 为什么用 openssl_pkcs7_sign 签名的消息不能用 openssl_pkcs7_verify 验证?

签名代码基于http://php.net/openssl-pkcs7-sign中的示例。私钥对应于证书中的公钥。该证书从一年前到 9999 年 12 月 31 日有效,因此日期范围不是问题。

是否需要设置密钥使用扩展?如果这是问题,那么需要设置什么?如果不是这种情况,那么我到底需要做什么才能让它发挥作用?

这是我的代码: