For example, anyone could use Let’s Encrypt to get a trusted certificate, so what makes this trustworthy? Or why not trust everyone that signs their own certificates with a program like OpenSSL?
Because of the man in the middle attack.
A self signed certificate could be a fake certificate created to trick you. Let’s Encrypt checks the domain name to make sure the certificate is owned by the domain name at least.
For example, if your Dad decides to run a man in the middle attack with the router to check if you are looking at porn, your Dad only has to issue self signed certificates. When you visit a webpage, he can program the local router to send you to his computer before going to the internet.
Kids Computer -> Dad’s computer -> Real Website.
Dad’s computer will make a self signed cert to interact with your computer, while decrypting the data from the real website. It then reencrypts the data with a self signed cert, that you suddenly decided to accept.
Now your dad / company you are working for knows you are browsing Porn and fires you. This may or may not have been inspired by real life events.
Except it turns out that it was the Bosses / Grandparents who were browsing Porn so nothing happened.
Anyway, Dad’s computer on this network setup cannot get a Let’s Encrypt certificate. The Sysadmins will go around to everyone’s computer or use Windows Group Policy to force the computers of the organization to trust a CA under control of the Sysadmins to get this man in the middle working.
It’s less about the trustworthiness of the site and more about confirming the site’s identity. Maybe the original is a scam site, but at least you know it’s the original.
There’s some great answers already here, but I want to add a detail fir some context. Like others mentioned, Let’s Encrypt does just the bare minimum of verification. They aren’t really verifying that you are who you say you are, they are verifying you control the website. The reason is due to their goal.
They want as many people as possible using a secure Web protocol, and that requires as many people as possible have a certificate for any websites they run. There is minimal verification of identity, but the benefit of encrypted communications and even that bare minimum id is a huge step up in consumer security from old unprotected protocols.
Q. If you connect to google.com, how do you know you are talking to google.com, and not bing.com? A. You find the CA of the certificate that google.com send you, and you ask that CA if the certificate is valid.
Q. How do you know that the CA is actually the CA, and not some fake actor? A. You find the CA of the CA, and ask it to validate the certificate of the CA.
Q. How do you know that the CA of the CA is actually the CA of the CA? A. After several layers of this recursion, there is a hardcoded set of trusted certificates on your PC.
If someone self-signs a certificate, then this chain of questions ends well before you end up with a hardcoded (and thus trusted) certificate.
Let’s encrypt verifies that a certificate is created from a specific domain. Therefor it can tell is whether the cert belongs to a domain with certainty.
the Cert just confirms, that the domain your accessing is belonging to who owns it. When you signup for a cert at LetsEncrypt, you have to run a script on the source, which confirms as your domain.
You wouldn’t be able to get a Cert for e.g. amazon.com - because you wouldn’t be able to run that specific script on the source and so LetsEncrypt couldn’t confirm if that domain really is yours or not. And that’s as well the reason, why not trust everyone,