OpenSSL deprecated all sorts of functions in version 3, so the authentication protocol needs to change.
New protocol:
- Client generates challenge data, encrypts with server's public key, sends it
- Server decrypts with private key, hashes challenge, encrypts with client's public key.
- Server generates another challenge, encrypts with client's public key, sends both
- Client validates Server by decrypting hash, hashing original challenge, compares them
- Client hashes Server's challenge, encrypts with server's public key, sends
- Server decrypts hash with private key, hashes its challenge compares them.
- If both hashes match on client and server, they are mutually authenticated and should trust each other.
OpenSSL deprecated all sorts of functions in version 3, so the authentication protocol needs to change.
New protocol: