ID: 36445 Comment by: eddi at ai000 dot de Reported By: Jacek at veo dot pl Status: Assigned Bug Type: Sockets related Operating System: SuSE Linux 9.1 PHP Version: 5.1.2 Assigned To: wez New Comment:
#!/opt/php/513/bin/php <?php error_reporting(2047); $c=array('tls'=>array( 'verify_peer' =>false, 'allow_self_signed' =>true, 'cafile' =>'/opt/php/testscripts/newkey.pem', 'capath' =>'/opt/php/testscripts/', 'local_cert' =>'/opt/php/testscripts/newkey.pem', 'passphrase' =>'smtp', 'CN_match' =>'ai000.de' ) ); $tls=stream_context_create($c); $c=stream_socket_server('tcp://127.0.0.1:1100',$er,$es,STREAM_SERVER_BIND|STREAM_SERVER_LISTEN,$tls); while(1){ if([EMAIL PROTECTED]($c)){ echo "Verbindung\n".openssl_error_string()."\n\n"; @fwrite($s,"220 ESMTP\r\n"); echo @fgets($s); @fwrite($s,"250 STARTTLS\r\n"); echo @fgets($s); @fwrite($s,"220 ESMTP\r\n"); var_dump(stream_socket_enable_crypto($s,true,STREAM_CRYPTO_METHOD_TLS_SERVER)); echo @fgets($s); } } ?> This is my test code. The negotation is endless among server script and Mozilla-Thunderbird. When I start the script below, my browser tell me: there are no conforming algorithms available. $c=stream_socket_server('ssl://127.0.0.1:1100',$er,$es,STREAM_SERVER_BIND|STREAM_SERVER_LISTEN,$tls); The Discription ("stream_socket_enable_crypto ( resource stream, bool enable [, int crypto_type [, resource session_stream]] )") is obscure. What is "resource session_stream"? This word is singly used there and no records describe it. Previous Comments: ------------------------------------------------------------------------ [2006-02-22 11:13:23] Jacek at veo dot pl The same problem. ------------------------------------------------------------------------ [2006-02-22 11:06:28] [EMAIL PROTECTED] Wez, plz take a look at this reproduce code: <?php $ssl = stream_socket_server('tcp://127.0.0.1:4445', $errnum, $errstr); stream_socket_enable_crypto($ssl, TRUE, STREAM_CRYPTO_METHOD_SSLv23_SERVER); ?> ------------------------------------------------------------------------ [2006-02-18 18:20:45] Jacek at veo dot pl Description: ------------ I am creating a SMTP server based on PHP. I have a problem with TLS encryption. I tried to enable crypto after stream_socket_accept - it failed. ./configure --with-apxs2 --with-config-file-path --with-libxml-dir --with-zlib --with-zlib-dir --enable-bcmath --with-bz2 --enable-calendar --with-curl --enable-dba --with-inifile --with-flatfile --enable-dbase --enable-exif --enable-filepro --enable-ftp --with-openssl --with-openssl-dir --with-gd --with-jpeg-dir --with-png-dir --without-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-imap --with-imap-ssl --enable-mbstring --with-mysql --with-mysqli --with-pdo-mysql --enable-soap --enable-sockets --enable-sqlite-utf8 --with-xmlreader --enable-memory-limit --with-iconv --with-ncurses Reproduce code: --------------- <?php $context = stream_context_create(); stream_context_set_option($context, 'tls', 'local_cert', '/server.misc'); echo 1; $ssl = stream_socket_server('tls://0.0.0.0:4445', $errnum, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $context); echo 2; stream_socket_enable_crypto($ssl, TRUE, STREAM_CRYPTO_METHOD_TLS_SERVER); echo 3; fclose($ssl); ?> Expected result: ---------------- 123 Actual result: -------------- 12 And script is running. When I try to connect - I can, but script don't "go ahead". ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=36445&edit=1