Erstmal hast Du damit nur eine verschlüsselte Verbindung.
Mit wem die besteht, musst Du anders klären. Du kannst zum Beispiel den CommonName oder andere Details prüfen. Bringt natürlich bei selbstsignierten nichts, weil die sich jeder erstellen kann. Oder Du prüfst die Seriennummer des Zertifikates, oder einen Hash dessen. Mit der Stolperfalle, dass Du nach Ablauf (falls es zeitlich beschränkt ist) natürlich ein anderes wirst auf dem Server installieren müssen, und der Client dann eine andere Seriennummer sieht.
Ok, das kann ich nachvollziehen. Da ich ja beide Seiten "in der Hand" habe könnte ich bestimmte Zertifikatsmerkmale in meinem Programm hinterlegen und gegenchecken.
Um ehrlich zu sein sehe ich in dem Szenario irgendwie keinen Sinn darin, "offizielle", also von einem Trustcenter signierte Zertifikate zu verwenden. Ich brauche nach meinem Verständnis keine externe Instanz die
meinem Programm versichert, dass
meine Zertifikate auch wirklich von
mir sind. Anders siehts ja aus wenn eine Seite der verschlüsselten Verbindung eben nicht weiß, ob das gelieferte Zertifikat authentisch ist.
Trotzdem bleibe ich dabei dass es in diesem Szenario doch sicherer wäre, der Server würde das Zertifikat nicht in die Welt hinaus "brüllen". Andererseits war ja SSL/TLS nie dazu gedacht, als Zugangsschutz zu funktionieren sondern als Absicherung des Transportweges.