2015-05-27 23 views
10

Tôi đã nâng cấp Node.js trên máy Mac lên phiên bản mới nhất, 0.12.4, cũng như NPM thành 2.10.1 và tôi chạy lại npm cài đặt cho dự án Express của mình .Lỗi bắt tay SSL với máy chủ Express theo Node & NPM mới nhất

Bây giờ, khi tôi truy cập https://localhost:3001, tôi nhận được "Trang web này không khả dụng/ERR_CONNECTION_REFUSED" trong Chrome. Khi tôi chạy curl -v https://localhost:3001 tôi nhận được

curl -v https://localhost:3001/ 
* Hostname was NOT found in DNS cache 
* Trying ::1... 
* Connected to localhost (::1) port 3001 (#0) 
* Server aborted the SSL handshake 
* Closing connection 0 
curl: (35) Server aborted the SSL handshake 

này chắc chắn là kết quả của việc nâng cấp Node.js, như vấn đề nảy sinh ngay sau khi nâng cấp.

tôi bắt đầu dịch vụ của tôi như thế này:

options = { 
    key: fs.readFileSync('sslkey.pem'), 
    cert: fs.readFileSync('sslcert.pem') 
}; 
http.createServer(app).listen(settings.apiPort); 
https.createServer(options, app).listen(settings.apiSSLPort); 
console.log('Listening on ports: ' + settings.apiPort + ' and ' + settings.apiSSLPort); 

Có ai có bất kỳ ý tưởng những gì đang gây ra vấn đề này?

+0

thử trình duyệt khác nhau và bộ nhớ cache rõ ràng. – deek

+0

'curl -k -v https: // localhost: 3001 /' hiển thị là gì? Tùy chọn '-k' cho' curl' cho phép kết nối "không an toàn". Điều này, kết hợp với tùy chọn '-v', sẽ giúp cung cấp thêm thông tin về chứng chỉ đang được máy chủ của bạn sử dụng. Ngoài ra, bạn có thể sử dụng 'openssl s_client -connect localhost: 3001'. Phần thú vị sẽ là để xác định _when_, trong quá trình bắt tay SSL, kết nối được đóng lại. – Castaglia

Trả lời

2

tôi đã cùng một vấn đề, hãy thử này:

options = { 
     key: fs.readFileSync('sslkey.pem', 'utf-8'), 
     cert: fs.readFileSync('sslcert.pem', 'utf-8'), 
     ca: fs.readFileSync(<CA_FILE>, 'utf-8'), 
     requestCert: true, 
     rejectUnauthorized: false 
    }; 
Các vấn đề liên quan