This makes sense, if your webserver is only accepting requests that present the appropriate client certificate and your curl request isn’t presenting the certificate…
There are a few approaches. First and best, use WP-CLI which can call cron for you. This basically requires some sort of shell access though.
You could consider calling it locally using PHP using the “php -q wp-cron.php” syntax, this bypasses the webserver and all related authentication completely, but WP-CLI is a bit cleaner. This also probably needs shell access, although some control panels might make this easier than installing WP-CLI.
You could adjust your webserver configuration to allow AOP or traffic from 127.0.0.1 (without AOP), then use curl like this: curl --silent --resolve “myblog.example.com:443:127.0.0.1” https://myblog.example.com/wp-cron.php?doing_wp_cron > /dev/null
Finally, you could just turn WP’s native cron support back on, it has very little real-world impact on most sites in modern versions of WordPress because the client doesn’t wait for the response from wp-cron.php before proceeding. WordPress has so much overhead anyway that the one extra call to check the database to see if cron tasks are overdue is a drop in the proverbial bucket.