Is it possible to prevent man-in-the-middle attack when using self-signed certificates?

前端 未结 3 1606
感动是毒
感动是毒 2021-02-14 06:51

I\'m not sure is similar question has been asked before (I couldn\'t find any), but is it possible to protect Client/Server from Man-In-The-Middle attack?

I\'m writin

相关标签:
3条回答
  • 2021-02-14 07:11

    You can hard-code the server's certificate and compare it against what you receive.

    Or better yet, create a CA certificate and server certificate, signed by the CA. Have the CA trusted on the client (again by hardcoding it in your application) and validate received server certificate using the CA certificate.

    0 讨论(0)
  • 2021-02-14 07:12

    If you can protect your private keys well enough, a middleman will not be able to masquerade as you, assuming the user actually looks at the certificate. The problem with self-signed is that if you want the user to add the exception to their browser, or just ignore the warning, then you are exposed to man-in-the-middle attack, because anyone else may create their own certificate.

    Of course, "protecting your private keys well enough" is not trivial at all. When you pay for a "Verisign" certificate, you're not paying for their software creating the certificate - you're paying for the security forces they have guarding the building in which the private keys are stored.

    0 讨论(0)
  • 2021-02-14 07:13

    Yes.

    In short, a self signed certificate is more insecure than a CA certificate only when the client does not know the certificate in advance and therefore has no way to validate that the server is who it says it is.

    If you add the self signed certificate to the client and don't accept any other certificate, you're actually as secure (or, one could argue, even more so) than having a certificate authority signed certificate.

    The important parts to keep SSL secure with or without a certificate authority are;

    • The server private key (and in the case of a CA, the private keys of all its roots) is kept secret.
    • The client knows the server certificate (or its CA root).
    0 讨论(0)
提交回复
热议问题