Der
LWP::UserAgent ist schon recht fähig, was HTTPS angeht. Er verwendet dazu
IO::Socket::SSL, und in der Dokumentation dieses Moduls stehen auch die relevanten Parameter - sowie einige einfache Beispiele, mit denen man gut testen kann, ob die SSL-Verbindung zustande kommt. Da steht auch, wii Du vorgehst, wenn Du selbst ein Client-Zertifikat zum Login brauchst.
Ansonsten kommt es, wie so oft, auf die Plattform an. Wenn Du auf Linux
LWP::Protocol::https über den Paketmanager installierst, oder auf Windows Strawberry nutzt, dann ist jeweils bereits eine ganze Latte von CAs vordefiniert und Du musst nur dann ein
SSL_ca_file angeben, wenn der Download-Server eine private CA betreibt.
Noch ein Sonderfall: Wenn der eigentliche Download über FTP via SSL geht, dann schlägt bei TLS 1.3 ein Fehler in
Net::FTP zu, den wir vor kurzem hier besprochen haben. Für den gibt es bereits einen Pull Request von Steffen Ullrich, der aber noch in keinem Release drin ist.