array( "capture_peer_cert" => true, 'verify_peer'=>false, 'verify_peer_name'=>false, 'allow_self_signed'=>true ) )); $stream = @stream_socket_client("ssl://{$hostname}:{$port}", $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context); if(!empty($stream)){ $cert_data = openssl_x509_parse(stream_context_get_params($stream)["options"]["ssl"]["peer_certificate"]); $validFrom = DateTime::createFromFormat('ymdHisT', $cert_data["validFrom"]); $validTo = DateTime::createFromFormat('ymdHisT', $cert_data["validTo"]); $now = new DateTime(); if ($now >= $validFrom && $now <= $validTo) { return true; } else { return false; } } else { // Error connecting to the SSL endpoint error_log("Failed to connect to SSL endpoint: {$errstr} ({$errno})"); return false; } } function isDocker(){ return file_exists('/var/www/docker_vars.json'); } $hostname = 'live'; if(!isDocker()){ $hostname = 'localhost'; } if (!is_ssl_certificate_valid($hostname)) { // Restart Nginx echo 'Restart Nginx'; exec('/usr/local/nginx/sbin/nginx -s stop'); sleep(3); exec('/usr/local/nginx/sbin/nginx'); }else{ echo 'No need to restart'; }