2012-04-14 28 views
11

Tôi đang tách các sợi tóc cố gắng để máy chủ HTTPS chạy bằng StartSSL cert. Tôi có tất cả các file cần thiết từ họ và tôi sử dụng chúng bằng cách đi qua chúng trong createServer đối số:Lỗi khi khởi động HTTPS trên Node.js trên Mac OSX bằng cách sử dụng StartSSL cert

var options = 
{ 
    ca:  FS.readFileSync('sub.class1.server.ca.pem'), 
    key: FS.readFileSync('ssl.key'), 
    cert: FS.readFileSync('ssl.crt') 
}; 

Và đây là lỗi tôi nhận.

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Object.createCredentials (crypto.js:87:31) 
    at HTTPSServer.Server (tls.js:914:28) 
    at HTTPSServer.Server (https.js:33:14) 
    at HTTPSServer.HTTPSServer (/Users/myUserName/node_modules/connect/lib/https.js:34:16) 
    at new HTTPSServer (/Users/myUserName/node_modules/express/lib/https.js:38:23) 
    at Object.createServer (/Users/myUserName/node_modules/express/lib/express.js:43:12) 
    at Object.<anonymous> (/Users/myUserName/Sites/node.js/https/app.js:12:36) 
    at Module._compile (module.js:441:26) 
    at Object..js (module.js:459:10) 
    at Module.load (module.js:348:31) 

Tôi nghĩ có lẽ tôi nên chuyển đổi chứng chỉ sang PEM. Nhưng chạy:

openssl x509 -in ssl.crt -out ssl.der -outform DER 

... mang lại cho tôi lỗi tương tự

unable to load certificate 
67304:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-44/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE 

Bất cứ ý tưởng tại sao?

CẬP NHẬT: Điều này chỉ xảy ra trên OSX. Tôi đã thử chạy cùng một thứ trên một máy chủ Ubuntu và nó hoạt động.

Trả lời

7

tôi đã gặp sự cố tương tự. tuy nhiên tôi có thể xác nhận rằng trên máy của tôi (macbook osx 10.7.3) nút https hiện đang chạy mà không có lỗi khi sử dụng chứng chỉ tự ký.

rằng lỗi cụ thể có nghĩa rằng nó hoặc không thể tìm thấy các tập tin, hoặc không có gì trong các tập tin là (bạn có thể xác nhận điều này bằng cách thông qua một chuỗi rỗng hoặc sử dụng một đường dẫn tập tin không hợp lệ.)

trước hết, hãy thử sử dụng đường dẫn tuyệt đối - ví dụ FS.readFileSync (__ dirname + 'ssl.crt').

cũng mở cert của bạn và các tập tin quan trọng và khẳng định rằng chúng chứa dữ liệu trong các hình thức: '----- BEGIN' ... vv

cũng nhận thấy rằng trong khi tập tin của bạn là .cert và .key tệp, tài liệu tham chiếu tới chứng chỉ và tệp khóa có đuôi .pem.

http://nodejs.org/api/https.html

từ những gì tôi hiểu, không có nhiều sự khác biệt, các nội dung xuất hiện khá giống với tôi, nhưng những điều này có thể khó sử dụng.

đây là một lệnh để chuyển đổi một tập tin vào một tập tin .csr .pem nào:

openssl x509 -req -in certrequest.csr -signkey privatekey.pem out certificate.pem

lấy từ http://silas.sewell.org/blog/2010/06/03/node-js-https-ssl-server-example/

3

Tôi nghĩ rằng bạn đã theo dõi bài viết này https://tootallnate.net/setting-up-free-ssl-on-your-node-server như tôi đã làm và tôi gặp vấn đề tương tự như bạn đã có. Nhưng sau khi kiểm tra nhiều lần tất cả các tập tin tôi lấy từ StartCom, tôi thấy rằng tôi vô tình lưu một chứng nhận và một khóa riêng như UTF8, không ANSI. Sau khi thay đổi mã hóa các tệp thành ANSI, node.js bắt đầu hoạt động như một nét duyên dáng :)

Các vấn đề liên quan