我正在研究一个需要我在PHP中签署一个短字符串的功能,并在C#中验证字符串的签名. 我真的很想使用有那么这里有什么选择?需要C#和PHP之间的完整互操作性.除了openssl之外,可以使用库. 解决方案 我使用string base64pubkey = ""; RsaKeyParameters pubKey = PublicKeyFactory.CreateKey(Convert.FromBase64String(base64pubkey)) as RsaKeyParameters; byte[] signature = Convert.FromBase64String(""); byte[] message = Encoding.ASCII.GetBytes("Someth
以下是关于 openssl 的编程技术问答
我目前正在编写一个脚本来通过Web界面生成CSR,以提交生成证书.我当前的问题是我想生成SAN证书,但找不到有关如何将subjectAlternateName添加到生成的证书请求的任何信息. 我当前的代码是: $private_key = openssl_pkey_new( array( 'private_key_bits' => 2048 ) ); $domain_data = [ "countryName" => 'GB', "stateOrProvinceName" => 'Countyname', "localityName" => 'townname', "organizationName" => 'Company ltd.', "organizationalUnitName" => "IT", "emailAddress" => 'IT@
我的服务器是nginx + php-fpm 下面的代码将导致错误 file_get_contents('https://github.com'); 或 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://github.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); //crash here curl_close($ch); 网页显示502错误 nginx日志是 [错误] 2656#0: *541 recv()失败(104:连接由peer重置),读取上游响应标头 fpm日志是 7月37日:37:37.619903 [注意] fpm_got_signal(),第48行:接收到sigchld 7月
我在使用openssl_seal函数加密的公共密钥中加载一些问题... 我已经使用openssl命令行工具创建了公共和私钥: openssl genrsa -des3 -out private.pem 1024 openssl rsa -in private.pem -out public.pem -outform PEM -pubout 但是,当我在PHP代码中运行它时,我会收到以下错误: openssl_seal() [function.openssl-seal]: Don't know how to get public key from this private key openssl_seal() [function.openssl-seal]: not a public key (1th member of pubkeys) 当我使用:openssl验证public.pem时,我得到: unable to load certificate 1
我已经花了很多时间试图弄清楚如何使用密码从openssl_pkey_get_private()确切地检索原始的私钥数据.我觉得我缺少一件简单的事情. 这是我的代码: $config = array( "private_key_bits" => 2048, //size of private key ) $privKey = openssl_pkey_new($config); //creating a private key resource openssl_pkey_export($privKey, $pkeyout,"test123",$config); //obtaining an encrypted private key $result = openssl_pkey_get_private($pkeyout, "test123"); //decrypting the encrypted private key var_dump($result); //pr
我需要开发一个PHP类以与Apple服务器进行通信以进行推送通知(APN).我有证书(.pem),然后尝试遵循Internet上找到的各种教程,但是我仍然会遇到错误,试图连接到SSL://gateway.sandbox.push.apple.com:2195带有流插座的2195: $apnsHost = 'gateway.sandbox.push.apple.com'; $apnsPort = 2195; $apnsCert = 'apns-dev.pem'; $streamContext = stream_context_create(); stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); $apns = stream_socket_client('ssl://'.$apnsHost.':'.$apnsPort, $error, $errorString, 2, STREAM_CLIE
我目前正在为疗养院建立一个网站. 我已经设计了一个计划来将私人数据存储在我的数据库中,但是我想您对此的看法. 基本上,我有一个表patient存储 public (=非敏感的)信息.其他一些信息(例如名称,地址)是私人的,需要安全存储.我使用PHP OpenSSL生成并由网站经理发送的公共/私钥对.该密码仅被允许访问私人数据(基本上是医疗保健提供者)知道的人知道. 我想将它们存储在另一个桌子中. 第一个问题,是BLOB最佳的列类型(带有mySQL)来存储二进制数据.还是我应该将它们转换(例如base64)并将它们存储在VARCHAR列中? 我的patient_secure_data表看起来像这样: id INT AUTO_INCREMENT patient_id INT (FOREIGN KEY to patient.id) key VARCHAR(63) data BLOB env BLOB 这是一
在命令行中,我可以通过键入 来验证证书是由Trusted CA发出的. openssl验证mycert.pem 我如何使用PHP的OpenSSL库? php具有 openssl_verify 功能,该功能获取许多额外的参数: data , string $signature , mixed $pub_key_id 如何使用相应的PHP功能重复该简单的命令行操作? 解决方案 使用 phpseclib,纯PHP X509实施.例如 loadCA('...'); $x509->loadX509('...'); echo $x509->validateSignature() ? 'valid' : 'invalid'; ?> 请参阅 有关更多信息 其他解决方案 我不确定您的证书是什么,但我发现此功能OPENSL_X50
我目前正在尝试在EC2服务器上安装OpenSSL,以便可以摆脱此特定错误: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:func(148):reason(1040) 进行了一些研究后,我发现我需要在我的php.ini文件中启用某些内容,但是,我无法启用与openSSL有关的任何东西,我需要进行调整. 从;extension=php_openssl.dll到extension=php_openssl.dll 那就是当我意识到我需要为我的php.ini文件安装一个扩展程序以使我启用它,但是我不知道如何在EC2实例服务器上安装OpenSSL.有人可以给我任何指导吗? 解决方案 我相信您会在服务器上使用yum install openssl. 尝试yum search opennsll如果
我正在准备打开nginx 我理解,如果我不做对的话,重播攻击就会可能.我了解,要防止这种情况,您还需要使用 $ SDARLAY> > 在早期数据中发送的请求可能需要重播攻击.到 防止在应用层的此类攻击, 应使用$ ssl_early_data变量. 我不明白的是,是否足以将此指令放入NGINX配置中,或者/是否/如何使用我的服务器上的PHP应用程序以某种方式使用此$ SSL_EARLY_DATA变量并执行一些其他检查. 解决方案 您是正确的,该标头本身无能为力,您需要在PHP应用程序中其他逻辑. 就我而言,我使用的是FastCGI变量,而不是标题: fastcgi_param TLS_EARLY_DATA $ssl_early_data; 然后,在PHP中,您需要对有可能发生重播攻击风险的任何请求进行检查: if ($_SERVER['TLS_EARLY_DATA'] === '1') { http_response_code
我想在Php. 中解析X.509证书 证书以der-der-dected x.509格式. 我尝试在PHP中使用openssl_x509_parse method,但它不起作用. 证书数据是在MDM向CERTICATEATIST发射命令后收到的有效数据. 我正在使用以下代码: $data = 'MIIDizCCAnMCCQDCpCAUbA2P4TANBgkqhkiG9w0BAQUFADBrMSIw IAYDVQQKDBkqLnNtYXJ0c291cmNpbmdnbG9iYWwubmV0MSEwHwYD VQQLDBhEb21haW4gQ29udHJvbCBWYWxpZGF0ZWQxIjAgBgNVBAMM GSouc21hcnRzb3VyY2luZ2dsb2JhbC5uZXQwHhcNMTIwNTI5MTM1 NTU0WhcNMTMwNTI5MTM1NTU0WjCBozELMAkGA1UEBhMCTlkxCzAJ BgNVBA
通常,我经常搜索并阅读了很多以解决我的问题,但是对于这个特殊的问题,它非常没有生产力. 我正在运行我安装了LAMP堆栈的64位Ubuntu Linux服务器,并且Libcurl没有SSL支持问题,而OS二进制确实具有SSL支持. PHP无法阅读.当我搜索解决方案并尝试执行以下操作以在安装PHP时启用SSL支持时,我遇到了问题. ./configure .... --with-openssl ... .... /usr/bin/ld: ext/standard/.libs/info.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC ext/standard/.libs/info.o: could not read symbols: Bad value collect2: error: ld ret
这是我的要求: 我需要使用AES加密(包括随机iv),基本64对其进行加密,然后对其进行编码,然后将其编码为url-condode. 我试图在PHP和Ruby中获得相同的结果,但我无法使其起作用. 这是我的php代码: function encryptData($data,$iv){ $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $iv_size = mcrypt_enc_get_iv_size($cipher); if (mcrypt_generic_init($cipher, 'g6zys8dlvvut6b1omxc5w15gnfad3jhb', $iv) != -1){ $cipherText = mcrypt_generic($cipher,$data ); mcrypt_generic_deinit
编辑 我目前正在移动,并且在iPhone上的堆栈交换应用程序中只有如此,因此以下代码中的引号有一些奇怪的格式 - 道歉!我在真实的代码中有真实的:) 我一直在尝试解决这两个天的其他问题,但这是... 只是尝试使用file_get_contents()捕获位于同一服务器和同一域上的另一个文件的网页,并包括.我正在使用带有自签名的生产证书的MAMP(以便我可以拥有服务器力SSL等),这样就可以在我的Mac上本地"始终信任"该证书,因为它显然是自签名的. 所以现在我有一个问题,我想让一个页面捕获另一页的内容.我最初尝试使用卷曲,并且它在没有给我任何例外的情况下失败了,并且没有使用curl_error()的信息,所以我切换到curl_error() C0>我得到异常SSL operation failed with code 1 ... ssl3_get_server_certificate:certificate verify failed 我认为这与OpenSSL不信
我最近运行了作曲家更新,这是我遇到的错误: namshi/jose 5.0.2要求lib -openssl * - >请求的链接库OpenSSL已安装了错误的版本或从 您的系统,请确保将其提供给它 . 我正在使用MAMP.我如何解决这个问题? 当一些堆栈溢出答案时,我尝试在Mac上升级OpenSSL版本,但没有运气 which openssl 显示 /usr/local/bin/openssl openssl version 显示 OpenSSL 1.0.2h 3 May 2016 解决方案 最终的结论是使用Brew卸载MAMP,然后安装Apache,MySQL和PHP(我花了不到5分钟的时间才能设置这三个分钟). 然后安装第三方软件包(包括OpenSSL)很轻松. 总的来说,我花了10分钟,我想说的是值得的.
我在MacBook Air中成功运行APNS代码,但事实证明我无法在另一台计算机中运行它: 我检查了这些相同: 1. .pem文件(特定于特定) 2.程序 计算机无法正常工作: Windows 7,XAMPP,OpenSSL支持,没有防火墙 和 EC2 Linux服务器,带2195和2196打开 可能导致我在PHP代码中遇到此错误的其他问题是什么? Unable to connect to 'ssl://gateway.sandbox.push.apple.com:2195' 我知道可能没有打开SSL可能原因,但是我检查了Phpinfo(),应该是正确的. openssl OpenSSL support enabled OpenSSL Library Version OpenSSL 1.0.1c 10 May 2012 OpenSSL Header Version OpenSSL 0.9.8x 我在EC2服务器中尝试了Te
我在网站上使用了openssl_encrypt/Decrypt方法,但是我对$ TAG选项遇到了一些麻烦 openssl_encrypt ( $data, $method, $key, $options, $iv, $tag ) openssl_decrypt ( $data, $method, $key, $options, $iv, $tag ) 来自 -encrypt.php ,标签的定义是:使用AEAD密码模式(GCM或CCM)时通过引用传递的身份验证标签.但是我不明白. 我在我的代码中尝试了它 $data = "text to be encrypted"; $cipher = "aes-128-gcm"; $key = "0123456789abcdefghijklmnob123456"; $option = 0; $ivlen = openssl_cipher_iv_length($cipher); $iv = openssl_random_pseudo
因此,我试图使OpenSSL在Windows安装(1.7.3)的Windows安装上工作,该XAMPP(1.7.3)是用OpenSSL 0.9.8L构建的.这只是我第二次在 *AMP安装上安装OpenSSL,但第一次进行游泳(这是同一台机器上的WAMP安装,但我发现XAMPP更是我的样式,所以我切换了). 当我尝试一个简单的设置脚本时: var_dump(getenv('OPENSSL_CONF')); $privateKey = openssl_pkey_new(); while($message = openssl_error_string()){ echo $message.'
'.PHP_EOL; } 我收到了一条返回的消息: error:02001003:system library:fopen:No such process error:2006D080:BIO routines:BIO_new_file:no such file