I have seen that most companies use the TLS1.2 protocol, why not use the TLS1.3?
My question here is, what are these pros and cons of both, and currently what is a better option?
I have seen that most companies use the TLS1.2 protocol, why not use the TLS1.3?
My question here is, what are these pros and cons of both, and currently what is a better option?
... what are these pros and cons of both and currently what is a better option?
If TLS 1.3 is possible you should use it since it has a faster TLS handshake and encrypts not only the application payload but also parts of the TLS handshake like the certificate. TLS 1.2 is not insecure though, i.e. you can continue to use it.
The best is currently to support both on the client and server side: if a client supporting only TLS 1.2 connects to a server supporting both the server will automatically pick TLS 1.2. Similar if a client supporting both connects to a server supporting only TLS 1.2 then TLS 1.2 will be used by both too.
The pros of using TLS 1.3 are that it is more secure. It mandates things like perfect forward security, removes support for insecure crypto-primitives like MD5, adds new more secure ciphers, etc.
The cons of using TLS 1.3 is that it's so new (August 2018) that it's not often supported by underlying tools, and if it is it's often only supported under the latest and greatest versions.
Deploying new versions of anything is expensive. Software must constantly be maintained. Upgrading to new versions requires testing, may break existing infrastructure, etc.
Which is better is a matter of priorities and requirements for the specific case. The reason you're not seeing a lot of TLS 1.3 servers in January 2020 is because there's not a compelling reason to upgrade, and organizations have other priorities.
We've been through this before. As I write this in January 2020, TLS 1.0 is still supported by major browsers, but this will change in March of 2020, and TLS 1.0 and 1.1 will be deprecated. TLS 1.2 came out in August of 2008, but yet it's taken 11+ years for it to replace older versions of SSL/TLS. So often times protocol support moves slowly. For example, according to project dataspere TLS 1.2 was only turned on by default in Firefox 27, released on Feb 14, 2014. This is almost 6 years after the specification was released.
If your computer has tls1.3 is because it was compiled with openssl newers versions for linux and similar libraries/support/security updates when referring on windows and so on (That means the "If possible" in Steffen answer)
You may take in account also even if you have tls1.3 support on your OS (I mean those shared compiled libraries) your software to use this security functionality, maybe Mozilla, or others development like Python can have tls1.3 support statically compiled or linked in some ways that finally can make use of this one without needing OS support but precompiled "inside". This same history is valid for the computer/cloud on the server side for them to have tls support
Long story short, many users (not only computers of client/servers but you might want think on phone apps, embedded electronic field systems) still doesn't have support for tls1.3 these days so the "migration" could be a pain in the ass for them because is work for achieving "nothing" new apparently I'm terms of functionality, however you may look some blogs and dates to check tls1.2 already has its flaws and it is an older guy that companies still believe is full secure but I think this has to change (Even phones and all electronic stuff these days are powerful/automated enough to maybe start consider obsolete to our closed friend tls1.2 in a near future)
About client/server "picking versions" automatically ... Yes and No ... Please look this examples
Hope this can clarify the monster of tls similar to "just a better way to encrypt socket connection" (tcp normally) using a "better handshake" when the version is higher and this happens on the first talk of each other so the entire socket talk is hard to understand for hackers (for example an entire http message and whatever application layer you can think of like mqtt and so on)