Noob question alert.

I understand SSL certificates help mitigate MITM attacks, but I see the process to be so badly designed.

Basically the client needs to verify that it is talking to the particular domain's ip. This could be implemented this way. There could be a DNS record containing the server's public key. The client could then proceed with the verification and ssl process with the public key.

This will eliminate the following :

  • No certificate

  • No certificate authority

  • Browsers dont need to trust CAs

  • I dont have to pay and wait for my certificate.

Am I missing anything?

  • 1
    What happens if I MITM the DNS response and insert my own public key?
    – user
    Jun 23, 2020 at 15:58
  • As long as you thought about the problem of how to ensure the public key in the DNS record is not subject to MiTM, congratulations, you have invented DANE en.wikipedia.org/wiki/… . This approach lost. Browsers have implemented it and then removed the code. Same as for email, where the major email providers have invented a way to secure email without using DNSSEC, the way to secure HTTP by using DNSSEC lost to webpki. People want to be able to distrust a CA.
    – Z.T.
    Jun 23, 2020 at 15:58

2 Answers 2


I dont have to pay and wait for my certificate.

You don't need to do this currently. You can get free certificates in no time and fully automated from Let's Encrypt.

Browsers dont need to trust CAs

While browsers don't need to trust public CA directly in your proposal (which is essentially DANE), browsers still need some secure way to retrieve the public key. This can not be done with plain DNS since it provides no protection against spoofing and modifying the keys in transit. These protections are offered by DNSSec though. But DNSSec again involves some kind of trust hierarchy: the local DNS resolver somehow must be able to verify the DNS servers response - which is again done using trust chains based on locally stored and trusted keys.

Trust relationships cannot just emerge out of thin air. There need to be some initial trust already which can be used as the anchor for building trust chains. This is true for PKI as used in the CA system as it is true for DNSSec as it is true for a web-of-trust model like in PGP. And it is true in "real life" too: one should not trust others just because they say so.

  • ...and also for the web-of-trust model used by PGP/GPG for that matter.
    – mti2935
    Jun 23, 2020 at 16:41
  • @mti2935: good point. I've added it to the answer. Jun 23, 2020 at 16:43

The purpose of TLS implies that it is used in a particular way to provide the features of confidentiality, integrity and mutual-authentication.

You may not like it, but what you suggest are shortcomings are instead part of making use of the protocol.

You are also quite welcome to invent a better solution, there is nothing to say this can't be done in a different better way. It is not what you suggested though.

  • It's impossible to say whether or not this answers the question because it is just a statement without explanation or fact. Aug 9, 2020 at 23:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .