¿Es posible establecer una sesión TLS1.3 sin ningún certificado / autenticación?
Es posible realizar la autenticación sin certificados, pero no es posible realizar ninguna autenticación. Al utilizar PSK, la autenticación del servidor no se realiza con un certificado sino con una clave previamente compartida, es decir, un secreto común conocido entre el cliente y el servidor.
En caso afirmativo, ¿cómo puedo indicarle a un cliente de openssl (a través de la línea de comandos) que lo haga?
Con openssl1.1.1 puede iniciar un servidor de la siguiente manera:
# use a 48 byte PSK
$ PSK=63ef2024b1de6417f856fab7005d38f6df70b6c5e97c220060e2ea122c4fdd054555827ab229457c366b2dd4817ff38b
$ openssl s_server -psk $PSK -cipher TLS13-AES-256-GCM-SHA384 -nocert -accept 2020
Si luego inicia el cliente con el mismo PSK, obtendrá un protocolo de enlace TLS 1.3 exitoso sin certificados involucrados:
$ openssl s_client -psk $PSK -connect localhost:2020
CONNECTED(00000003)
---
no peer certificate available
---
No client certificate CA names sent
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 195 bytes and written 475 bytes
Verification: OK
---
Reused, TLSv1.3, Cipher is TLS13-AES-256-GCM-SHA384
...