Мы используем простейшую возможную реализацию клиента и сервера socket.io для устранения любых переменных, связанных с причиной этой проблемы. Клиент socket.io находится в JavaScript на AWS CloudFront с использованием собственного домена, а сервер находится на узле (nginx). Мы получаем безопасное соединение, и все работает, как ожидалось, за исключением того, что CloudFront отказывается передавать сертификат. Вот что мы получаем от socket.io относительно соединения:
accept: '*/*',
origin: 'https://cdn.ourdomain.com',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',
'sec-fetch-site': 'same-site',
'sec-fetch-mode': 'cors',
referer: 'https://cdn.ourdomain.com/ourapp.iframe.html',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9',
cookie: '_ga=GA1.2.245674994.1569802743; __zlcmid=uXiZmTTN1V8j16; _gcl_au=1.1.312077107.1570950743; _gid=GA1.2.851127118.1572308315; __gads=ID=a55ec67b74740d6a:T=1572647855:S=ALNI_MYuzmlVp2hvDIbUS5LuYBD4kYKHlA; io=gkqtOKgx38ddpH6dAAAA; _gat=1' },
time: 'Sat Nov 02 2019 07:41:25 GMT+0000 (UTC)',
address: '::ffff:127.0.0.1',
xdomain: true,
secure: true,
issued: 1572680485150,
url: '/ourapp-secure-connection/socket.io/?EIO=3&transport=polling&t=Muh3xpR',
query: { EIO: '3', transport: 'polling', t: 'Muh3xpR' } }
Client connected [id=LKTQbOl3_DdAJeH5AAAB, cert={}]
Ничто из того, что мы пробовали, не вернул ничего, кроме cert = {}. В документации AWS я видел несколько ссылок об отбрасывании пользовательских запросов сертификатов CloudFront. Кто-нибудь нашел способ обойти это?