A (простой) чат является частью приложения, которое я создал некоторое время назад. Сегодня я перехожу на сайт с http на https. Поэтому у меня также есть SSL-сокет для Socket.io, иначе браузеры будут скулить.Socket.io чат-сервер, не представляющий сертификат SSL
По какой-то причине, хотя мой чат-сервер вообще не предъявляет никаких сертификатов. Использование OpenSSL на Linux подтверждает это:
openssl s_client -connect my.subdomain.tld:1337 -servername my.subdomain.tld -ssl3
возвращает
CONNECTED(00000003)
140136057653064:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : SSLv3
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1436357417
Timeout : 7200 (sec)
Verify return code: 0 (ok)
---
я, очевидно, замененные домены. Порт на самом деле 1337, и сервер использует SNI, поэтому я считаю, что мне нужно использовать аргумент -servername?
Мой сервер Узел (упрощенно):
var fs = require('fs');
var privateKey = fs.readFileSync('/home/ssl_certificates/my_subdomain_tld.key').toString();
var certificate = fs.readFileSync('/home/ssl_certificates/my_subdomain_tld.crt').toString();
var ca = fs.readFileSync('/home/ssl_certificates/AddTrustExternalCARoot.crt').toString();
var io = require('socket.io').listen(1337, {key: privateKey, cert: certificate, 'ca': ca});
сертификаты существуют в этом месте, и они действительны (перепроверили). Как я могу отлаживать это? Почему Socket.IO не представляет сертификат?
Возможный дубликат: http://stackoverflow.com/questions/15449234/socket-io-cant-connect-through-https –
Не проще ли было бы хранить socket.io за фактическим веб-сервером, например nginx? Пусть nginx обрабатывает сертификаты. – bluesman
Нет. Я не хочу настраивать веб-сервер для чат-сервера. – Basaa