Skip to content

Commit 9aa7d62

Browse files
authored
Merge pull request #750 from Syncplay/tls-cnless-certs-fix
TLS: Support certificates without common name (Fixes #749)
2 parents 2a2f5f9 + e352ad3 commit 9aa7d62

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

syncplay/protocols.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,18 @@ def customHandshakeCallback(self, conn, where, ret):
396396

397397
def handshakeCompleted(self):
398398
self._serverCertificateTLS = self.transport.getPeerCertificate()
399-
self._subjectTLS = self._serverCertificateTLS.get_subject().CN
399+
if not self._serverCertificateTLS:
400+
self._client.ui.showErrorMessage(getMessage("startTLS-server-certificate-invalid"))
401+
self.sendHello()
402+
return
403+
404+
for x in range(0,self._serverCertificateTLS.get_extension_count()):
405+
if (self._serverCertificateTLS.get_extension(x).get_short_name() == b'subjectAltName'):
406+
self._subjectTLS = self._serverCertificateTLS.get_extension(x).__str__().replace("DNS:", "")
407+
408+
if not self._subjectTLS:
409+
self._subjectTLS = self._client._config.get("host", "") or ""
410+
400411
self._issuerTLS = self._serverCertificateTLS.get_issuer().CN
401412
self._expiredTLS =self._serverCertificateTLS.has_expired()
402413
self._expireDateTLS = datetime.strptime(self._serverCertificateTLS.get_notAfter().decode('ascii'), '%Y%m%d%H%M%SZ')

0 commit comments

Comments
 (0)