Php Ssl Miniserver -

// Parse request line $lines = explode("\r\n", $request); $first = explode(' ', $lines[0]); $method = $first[0]; $path = urldecode(parse_url($first[1] ?? '/', PHP_URL_PATH)); if (strpos($path, '..') !== false) $path = '/'; // basic security

$server = stream_socket_server("ssl://0.0.0.0:$port", $errno, $errstr, STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $context); if (!$server) die("Failed to start server: $errstr ($errno)\n");

echo "PHP SSL MiniServer running at https://localhost:$port\n"; echo "Document root: $docRoot\n"; echo "Press Ctrl+C to stop.\n";

fwrite($conn, $response); fclose($conn); 4.1 Start the server php ssl_miniserver.php [port] [document_root] Examples: PHP SSL MiniServer

// Start SSL server $context = stream_context_create([ 'ssl' => [ 'local_cert' => $certFile, 'allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false, ] ]);

while ($conn = stream_socket_accept($server, -1)) $request = fread($conn, 4096); if (!$request) fclose($conn); continue;

if (!extension_loaded('openssl')) die("Error: OpenSSL extension required.\n"); // Parse request line $lines = explode("\r\n", $request);

// Generate self-signed certificate if missing if (!file_exists($certFile)) echo "Generating self-signed certificate...\n"; $dn = [ "countryName" => "XX", "stateOrProvinceName" => "State", "localityName" => "City", "organizationName" => "Dev", "organizationalUnitName" => "Testing", "commonName" => "localhost", "emailAddress" => "admin@localhost" ]; $privkey = openssl_pkey_new(); $cert = openssl_csr_new($dn, $privkey); $cert = openssl_csr_sign($cert, null, $privkey, 365); openssl_pkey_export_to_file($privkey, $certFile); file_put_contents($certFile, openssl_x509_export($cert, true), FILE_APPEND); echo "Certificate saved to $certFile\n";

$file = $docRoot . $path; $response = "";

#!/usr/bin/env php <?php // PHP SSL MiniServer v1.0 – HTTPS file server with self-signed cert $port = $argv[1] ?? 8443; $docRoot = $argv[2] ?? getcwd(); $certFile = . '/server.pem'; 8443; $docRoot = $argv[2]

1. Overview PHP SSL MiniServer is a single‑file PHP script that creates a basic HTTPS web server. It requires no external web server (Apache/Nginx) and no manual OpenSSL configuration — it generates a self‑signed certificate on the fly.

if (is_dir($file)) // Directory listing $list = ""; $dir = opendir($file); while ($item = readdir($dir)) if ($item != '.' && $item != '..') $href = rtrim($path, '/') . '/' . $item; $list .= "<li><a href=\"$href\">$item</a></li>"; closedir($dir); $body = "<!DOCTYPE html><html><head><title>Index of $path</title></head><body><h1>Index of $path</h1><ul>$list</ul></body></html>"; $response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: " . strlen($body) . "\r\nConnection: close\r\n\r\n$body"; elseif (is_file($file)) // Serve file $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file); finfo_close($finfo); $size = filesize($file); $content = file_get_contents($file); $response = "HTTP/1.1 200 OK\r\nContent-Type: $mime\r\nContent-Length: $size\r\nConnection: close\r\n\r\n$content"; else $body = "<h1>404 Not Found</h1>"; $response = "HTTP/1.1 404 Not Found\r\nContent-Type: text/html\r\nContent-Length: " . strlen($body) . "\r\nConnection: close\r\n\r\n$body";

PHP SSL MiniServer

Need online bookings on your site? Try Book24Seven free — no card, no commitment.

X
Cookie settings
PHP SSL MiniServer

Cookies allow us to better serve you. We collect information about the use of our website. You can manage your cookie settings below.

Essential cookies

Essential cookies are necessary for the functioning and development of our website. They do not store information that could immediately identify you.

Visitor measurement and analytics

We use the Google Analytics cookies to track visitor behavior and measure our website performance.