Hey there, I’ve been in the process of setting up my own REST API connected to a database on my own root server, however whenever I try to make a http call from roblox to said API, it just throws an error at me and I have no clue why.
I get HttpError: TlsVerificationFail whenever I use my domain as the URL with a https:// request.
When I change the URL variable to use http:// instead of https://, it gives me HttpError: ConnectFail and no connection attempt is shown on the web server’s console.
If I replace the custom domain with the server’s IP and use https://, I once again get HttpError: TlsVerificationFail ,
however if I use the server’s IP and use http://, I get HttpError: Unknown
The server it is hosted on has a valid SSL certificate, which I just validated today and I made sure it only uses TLS 1.2.
Googling a bunch of this stuff didn’t help much either and everyone just said that error happens if the server uses TLS 1.0 or 1.1.
The webserver itself is just a simple express.js webserver.
Edit: I also tried to force TLS 1.3 and then just got verification error.
I don’t have much experience with custom apis, but I do know a thing or two about Roblox’s http(s) service. Here are some things to double check:
I know this sounds dumb, but make sure http requests/services are actually enabled in game settings.
With that out of the way, onto the more complicated stuff.
While you said you’re using TLS 1.2, make sure that it’s also properly enabled and configured in your server settings and Express.js. It’s possible that the server is somehow still negotiating with an older TLS version (such as 1.1). I’m pretty sure you can specify the TLS version in Node.js.
Could be firewall issues too. Make sure that the necessary ports (typically 443 for HTTPS and 80 for HTTP) are open in your server’s firewall and that your router/firewall is correctly forwarding traffic to your server.
Lastly, try again later. Roblox has been having some major server issues lately and the problem might just be Roblox.
Okay so, I fixed it after a bunch of experimenting around. Roblox apparently seems to not trust SSL certificates (just the .crt) file enough and just refuses to connect because of that. I ended up having to bundle the .ca-bundle file and .crt file together and pass that to express. The .ca-bundle file contains a bunch of extra certificates which ensure an extra level of security, but it’s simply not needed by most applications / browsers.