Is it possible with TLS to only authenticate the client? In other words can one-way TLS be setup in such a way that only the host initiating the connection uses a client certificate and the second host in the transaction does not require a server certificate?
"Client" and "server" can be vague terms if multiple layers (TCP, TLS) are involved. It is possible and even the most common case that only a single certificate is used inside the TLS handshake, i.e. one party is properly authenticated in order to detect man in the middle attacks. This party is commonly the TCP server but it might also be the TCP client.
If a TCP connection is created from a TCP client (calling
connect) to a TCP server (calling
accept) then it is possible that the TLS handshake is initiated by the TCP server, thus essentially making the TCP server the TLS client (calling
SSL_connect) and the TCP client the TLS server (calling
SSL_accept). This way the certificate is provided by the TCP client (which is the TLS server).