Skip to content

Commit 0bab91c

Browse files
authored
TLS: Support certificates without common name (#749)
1 parent d71493d commit 0bab91c

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

syncplay/protocols.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,8 +396,19 @@ 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
400-
self._issuerTLS = self._serverCertificateTLS.get_issuer().CN
399+
if not self._serverCertificateTLS:
400+
self._client.ui.showErrorMessage("TLS enabled but no peer certificate was provided by the server.")
401+
self.sendHello()
402+
return
403+
404+
subject = self._serverCertificateTLS.get_subject()
405+
issuer = self._serverCertificateTLS.get_issuer()
406+
self._subjectTLS = getattr(subject, "CN", "") or ""
407+
self._issuerTLS = getattr(issuer, "CN", "") or ""
408+
409+
if not self._subjectTLS:
410+
self._subjectTLS = self._client._config.get("host", "") or ""
411+
401412
self._expiredTLS =self._serverCertificateTLS.has_expired()
402413
self._expireDateTLS = datetime.strptime(self._serverCertificateTLS.get_notAfter().decode('ascii'), '%Y%m%d%H%M%SZ')
403414

0 commit comments

Comments
 (0)