2012-11-19 56 views
17

Tôi đang làm việc để thiết lập SSL thông qua GoDaddy để sử dụng với máy chủ node.js của tôi trên AWS EC2. Tôi đã không thể làm cho nó hoạt động.Tạo Khóa SSL để làm việc với node.js

Đây là những gì tôi đã cố gắng:

Dành cho lĩnh vực: files.mysite.com

Trên máy chủ tôi chạy:

$ openssl req -new -newkey rsa:2048 -nodes -keyout files.mysite.key -out files.mysite.csr 

Common Name: files.mysite.com 
password: left empty 

sau đó tôi nhận được CSR: vim files.mysite.csr

Tôi sao chép và dán từ:

-----BEGIN CERTIFICATE----- 
......... lots of stuff 
-----END CERTIFICATE----- 

Có dòng trống thừa ở cuối, mà tôi để lại và dán vào giao diện GoDaddy bằng cách sử dụng phím rekey.

tôi sau đó tải về phím GoDaddy cung cấp:

gd_bundle.crt 
files.mysite.com.crt 

Sau đó, trong nút tôi chèn:

key: fs.readFileSync('server.key').toString(), 
cert: fs.readFileSync('server.crt').toString() 

Tôi không chắc chắn những gì server.key là hay server.crt cho rằng GoDaddy cung cấp hai tệp crt?
Bạn có thể trợ giúp không?

+3

Câu hỏi này cũng là một câu trả lời. Lệnh openssl của bạn là thích hợp để "tạo CSR cho các ứng dụng Node.js" Hoặc đó là thực sự rõ ràng và tôi chậm hoặc không và có nhiều người như tôi cần thông tin đó vì vậy tôi muốn tôi có thể upvote điều này cho cả câu hỏi và câu trả lời. – rainabba

Trả lời

25

GoDaddy sử dụng một giấy chứng nhận intermidiate ký chứng chỉ của bạn. Điều này có một số lợi thế cho cả bạn và GoDaddy. Nhưng phải mất một chút công việc để làm cho nó hoạt động (chỉ một chút, chủ yếu là googling xung quanh).

Trong Node.js bạn có thể cài đặt chúng như thế này:

require('https').createServer({ 
    key: fs.readFileSync('files.mysite.com.key'), 
    cert: fs.readFileSync('files.mysite.com.crt'), 
    ca: [fs.readFileSync('gd_bundle.crt')] // <----- note this part 
}, app).listen(443); 
+2

Làm cách nào để tạo .key? –

+1

Điểm tốt cho gói chuỗi. –

+0

Tại sao bạn có [] quanh ca chứ không phải các trường khác? –

3

Bạn nên sử dụng các tệp .crt.key khi tạo cá thể máy chủ http của mình. Đoạn sau đây sẽ cho bạn ý tưởng:

require('https').createServer({ 
    key: fs.readFileSync('/path/to/something.key'), 
    cert: fs.readFileSync('/path/to/something.crt'), 
}, app).listen(443); 

Nếu bạn có một cụm từ mật khẩu cho khóa, bạn có thể vượt qua nó mặc dù như sau:

require('https').createServer({ 
    key: fs.readFileSync('/path/to/something.key'), 
    cert: fs.readFileSync('/path/to/something.crt'), 
    passphrase: 'your_secret_passpahrase' 
}, app).listen(443); 
Các vấn đề liên quan