Gặp vấn đề khi IO.CONNECT có SSL đến một máy chủ IP khác



  • Chào!
    Mình cần giúp đỡ việc io.connect từ website (máy chủ mẹ IP-X) có sử dụng SSL (HTTPS) đến một máy chủ con của mình với IP-Y

    Ở client sẽ gặp vấn đền khi vào (máy chủ con của mình) https://P-Y:PORT:

    var socket = io.connect(https://IP-Y:PORT , { transports: ['websocket'] } );
    

    ở máy chủ con IP-Y:PORT

    https.createServer({
    	key: fs.readFileSync('somekey.key'),	
    	cert: fs.readFileSync('somecrt.crt')
    },app);
    

    Nếu bình thường chạy sẽ xuất hiện lỗi như sau:
    WebSocket connection to 'wss://IP-Y:PORT/socket.io/?EIO=3&transport=websocket' failed: Error in connection establishment: net::ERR_CERT_COMMON_NAME_INVALID

    Nếu mình dùng trình duyệt và ghé qua: https://IP-Y:PORT thì sau đó không bị lỗi nữa. mình hiểu ở đây là phải ghé qua IP-Y đó mới tạo Cert. Liệu có cách nào giải quyết vấn đề này không ạ? nếu được cho mình xin hướng dẫn cụ thể, cảm ơn!

    Mình đã tìm kiếm và thử nhiều cách, trong đó có việc chỉnh requestCert: false, nhưng như vậy kết nối bị xem là kém an toàn và bị gạch đỏ HTTPS



  • @Trần-Đức-Nhật Nếu bạn dùng https, thì bạn phải kết nối bằng domain name, không dùng ip. Trong môi trường development thì có thể dùng "requestCert: false" để bỏ qua việc check https. Nhưng khi lên production bạn nên dùng domain name để kết nối. vdu: mydomain.vn. thì code sẽ là:

    var socket = io.connect('https://mydomain.vn' , { transports: ['websocket'] } );
    


  • Cảm ơn bạn @Quy-Tran
    Việc đó thì mình biết bạn ạ, vấn đề của mình là io.connect đến một IP khác với Domain (máy chủ).
    https://mydomain.vn của mình với IP-X (bình thường dùng https://mydomain.vn:PORT thì rõ rồi bạn ) nhưng mình muốn kết nối với https://IP-Y:PORT (một máy chủ con của mình)
    Nếu mình dùng trình duyệt ghé qua https://IP-Y:PORT (IP-Y được trình duyệt được cấp cert cho) thì mọi chuyện sẽ bình thường kể từ đây.



  • @Trần-Đức-Nhật ssl cert của bạn tự tạo hay bạn mua từ dịch vụ cung cấp ssl cert? Nếu bạn không có ssl cert từ nhà cung cấp dịch vụ. Bạn có thể đăng ký free ssl từ https://letsencrypt.org/



  • @Quy-Tran said in Gặp vấn đề khi IO.CONNECT có SSL đến một máy chủ IP khác:

    @Trần-Đức-Nhật ssl cert của bạn tự tạo hay bạn mua từ dịch vụ cung cấp ssl cert? Nếu bạn không có ssl cert từ nhà cung cấp dịch vụ. Bạn có thể đăng ký free ssl từ https://letsencrypt.org/

    Mình đã mua bạn ạ, mình đang chạy server online luôn đấy. tạm thời mình đành dời app từ máy chủ con về máy chủ mẹ thì tất cả hoạt động rất tốt.


Log in to reply