Skip to content

Commit e4d7fcb

Browse files
committed
Verify TLS chain of trust, warn user if it fails.
1 parent c8d2cc0 commit e4d7fcb

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

electrumx/server/peers.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ async def _should_drop_peer(self, peer):
265265

266266
kwargs = {'family': family}
267267
if kind == 'SSL':
268-
kwargs['ssl'] = ssl.SSLContext(ssl.PROTOCOL_TLS)
268+
kwargs['ssl'] = True
269269

270270
if self.env.force_proxy or peer.is_tor:
271271
if not self.proxy:
@@ -283,10 +283,18 @@ async def _should_drop_peer(self, peer):
283283

284284
peer_text = f'[{peer}:{port} {kind}]'
285285
try:
286-
async with connect_rs(peer.host, port, session_factory=PeerSession,
287-
**kwargs) as session:
288-
session.sent_request_timeout = 120 if peer.is_tor else 30
289-
await self._verify_peer(session, peer)
286+
try:
287+
async with connect_rs(peer.host, port, session_factory=PeerSession,
288+
**kwargs) as session:
289+
session.sent_request_timeout = 120 if peer.is_tor else 30
290+
await self._verify_peer(session, peer)
291+
except ssl.SSLCertVerificationError as e:
292+
self.logger.warn(e)
293+
kwargs['ssl'] = ssl.SSLContext(ssl.PROTOCOL_TLS)
294+
async with connect_rs(peer.host, port, session_factory=PeerSession,
295+
**kwargs) as session:
296+
session.sent_request_timeout = 120 if peer.is_tor else 30
297+
await self._verify_peer(session, peer)
290298
is_good = True
291299
break
292300
except BadPeerError as e:

0 commit comments

Comments
 (0)