问题标签 [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.
php - PHP OpenSSL 扩展在安装 TYPO3 CMS 7.4.0 时不起作用
在安装 TYPO3 CMS 7.4.0 时,我收到以下消息:
PHP OpenSSL 扩展不起作用 尝试创建新的私有密钥进行测试时出现问题。请检查 PHP OpenSSL 扩展的集成以及是否安装正确。
赢得 8.1 x64;PHP 版本 5.6.12 VC11 x86 线程安全;阿帕奇 2.4.16 VC11 Win32
我已经阅读了类似的问题并做了所有推荐的事情,但问题仍然存在。
我所做的是:
- 在 php.ini 中未注释
extension=php_openssl.dll
- 检查启用了openssl的phpinfo():http: //i.imgur.com/Et00jpY.png
- 添加了一个带有值的环境变量“OPENSSL_CONF”:http: //i.imgur.com/wf1yCYe.png
将路径设置为“openssl.exe”:
将...\typo3\sysext\core\Configuration\DefaultConfiguration.php 中的$TYPO3_CONF_VARS['SYS']['binSetup']设置为 'openssl=C:\Apache24\bin\openssl.exe'
将 C:\Apache24\bin\ 附加到环境变量 PATH
重新启动 apache/重新启动 PC。
没有任何帮助。
- 您还建议检查什么?
- 如何
openssl_pkey_new()
使用cmd执行函数并检查openssl是否有问题?
编辑:
我已经仔细阅读了官方 php 网站上的 openssl.installation 手册(抱歉,由于这里缺乏声誉,我无法发布超过 2 个链接 ^^)并且没有任何帮助
当我运行这个脚本时:
error_reporting(E_ALL);$test = openssl_pkey_new();echo $test;
我在浏览器中看到一个空白页面(而 php.ini 中的 'display_errors = On' 和 'display_startup_errors = On')
- 安装了 XAMPP。
在 XAMPP 控制面板的 shell 中,openssl 命令给出
警告:无法打开配置文件:C:/xampp/apache/bin/openssl.cnf OpenSSL>
虽然 openssl.cnf 位于 C:/xampp/apache/conf/openssl.cnf 而在 PHP 变量中有_SERVER["OPENSSL_CONF"] C:/xampp/apache/conf/openssl.cnf
在 CMD openssl 命令中给出
C:\WINDOWS\system32>openssl 警告:无法打开配置文件:D:\tmp\openssl-1.0.1p\vc11\x86/openssl.cnf OpenSSL>
libeay32.dll 和 ssleay32.dll 都是 1.0.1.16 版本,在 apache/bin 和 /php 中是一样的
在
SetEnv OPENSSL_CONF "C:/xampp/apache/conf/openssl.cnf"
httpd-xampp.conf 中有
php - PHP RSA 密钥创建
我在创建/使用 PHP 中创建和使用的 RSA 密钥时遇到问题。问题是,(公共和私人)密钥应该在不同的服务器之间交换(例如,当用户帐户移动时)。
现在,PHP 的 openssl-lib 没有提供任何有关创建密钥格式的详细信息。http://php.net/manual/en/function.openssl-pkey-export.php上的最新文档只是声明它是“PEM 格式”,但没有说明它是 PKCS#1 还是PKCS#8
此外,私钥 PEM 的标头和尾标在 PHP 版本之间有所不同,如以下代码所示:
将输出不同的东西:
PHP v 5.4:
PHP v 5.5:
PHP v 5.6:
因此,私钥头/尾随您使用的 PHP 版本而变化。这不会是一个真正的问题,但事实证明,一个将创建一个带有“RSA”的密钥头的系统将无法使用没有“RSA”的密钥,例如,openssl_sign():你会得到一个错误指出“提供的密钥不能被强制转换为私钥”......这就是它变得混乱的地方。
根据https://tls.mbed.org/kb/cryptography/asn1-key-structures-in-der-and-pem,标头中带有“RSA”的私钥 PEM 格式和那些没有,是 PKCS#1 和 PKCS#8,即是否有关于算法等的附加信息。
因此,我遇到了严重的问题。为 PHP5.6 编写的相同软件无法在 PHP5.5 上运行。On 可以通过手动将 5.5 标题替换为 5.6 兼容的标题来使用解决方法,但这只是一个“肮脏的黑客”。有没有一种“好”的方法来处理这个问题?
在设置时,这个替换代码会尝试创建一个私钥,提取标题并“记住它”。然后将检查运行时使用的所有密钥。如果找到的标头不适合“本地”标头,则需要交换它们。
但我想有某种配置选项(我还没有找到)可以配置使用哪种格式?
接下来,更有趣的问题:openssl 究竟创建了什么格式?PKCS#1?PKCS#8?这也是可配置的吗?
php-openssl - 如何在 PHP Openssl 扩展中设置引擎?
我通过在我的代码中调用 openssl_sign() 来使用 PHP Openssl 扩展。
我的 Openssl 配置为使用 3 个不同的引擎(配置位于 '/etc/ssl/openssl.cnf')
我的默认引擎设置为我的自定义引擎,当我从命令行(openssl rsautl -sign)调用 RSA Sign 时,它确实使用了我的自定义引擎。
但是当使用 PHP Openssl 扩展时,它只调用“常规”Openssl 引擎。
我是否强制扩展使用我的自定义引擎?
windows - 本机 PHP 5.6 OpenSSL Composer.phar 无法在 Windows 上启用加密
我在 Windows 机器上使用原生 PHP 5.6 有问题。当我尝试运行作曲家更新(php composer.phar 更新)时出现此错误:
openssl 扩展被加载。我已经下载了这个文件http://curl.haxx.se/ca/cacert.pem
并将它保存到我机器上的一个路径中,并在 php.ini 中设置这个路径,比如
openssl.cafile = "c:\path\to\cacert.pem"
但它没有工作,仍然是同样的错误。
php - curl 与 TLSv1.2 在客户端上工作,但在服务器上不工作
在我的 ubuntu 14.04 LTS-server SSLv2 和 SSLv3 被禁用。我在服务器上运行不同的应用程序。一个应用程序需要使用 curl 来连接托管在同一台机器上的另一个应用程序。
问题是,该连接在我的 ubuntu 14.04 TLS-KDE 客户端上有效,但在我的服务器本身上无效。
在服务器和客户端上,相同的 curl 和 openssl 版本都在运行:
在我得到的客户端上
在我得到的服务器上
请指出正确的方向。
php - PHP加密在服务器上不起作用
我正在尝试将加密的 cookie 存储在 PHP 应用程序中,并实现了 2 个不同的加密库以使其正常工作。
两种实现在部署到服务器时都会在调用我的加密函数时产生致命异常。但是,在我的本地开发环境中,两种加密实现都可以成功运行。
我的 open_ssl 实现代码(适用于本地主机,不适用于远程服务器):
关于为什么服务器可能不允许 openssl_encrypt() 函数执行的任何想法?
php - Windows 上的安全 FTP 连接
官方 php 文档说:
“ftp_ssl_connect() 仅在 ftp 模块和 OpenSSL 支持都静态构建到 php 中时可用,这意味着在 Windows 上,该函数将在官方 PHP 构建中未定义”
无论如何,有什么方法可以将此功能与 xampp 一起使用,或者您是否知道任何其他具有静态 OpenSSL 的 windows php 解决方案?
php - PHP 扩展调用另一个扩展函数
我正在编写一个 PHP 扩展,并想从我的扩展中调用 openssl 扩展函数,具体来说,我想从我的扩展中调用 openssl_x509_read 函数。可能吗?我该怎么做?
java - 使用 X509 证书验证 SOAP 请求
我有一个 SOAP 服务器。在服务器接收的 SOAP 请求具有ws 安全标头。以下是请求 XML 的主要节点。
- BinarySecurityToken(X509PKIPathv1 证书)
- 文摘法
- 摘要值
- 签名值
安全令牌参考
数据(客户端在 SOAP 正文中发送的数据)
我必须使用客户端(请求的发送者)提供的证书(.cer 文件)来验证请求。
验证请求的步骤是什么?请解释一下这个概念。没有库可用于执行此操作。BinarySecurityToken
经过长时间的研究,我能够匹配base64_encode($certFile)
$certFile 是请求者的证书。现在我正在研究如何搭配DigestValue
什么。
php - 计费应用程序和“openssl_verify():提供的密钥参数不能强制转换为公钥”
我正在尝试测试我的服务器端 IAB 签名验证方法。我想使用我的公钥和私钥(不是来自 Google 的),所以我伪造收据并用 id_rsa.pub 签名:
在 php 中,我想用 openssl_verify 验证它:
验证总是错误的,我得到:
我的 id_rsa.pub 密钥有什么问题?