2012-03-01 13 views
21

Piszę proxy proxy HTTPS-HTTPS. Przed użyciem Pythona jako głównego języka programowania, ale teraz interesuję się plikiem node.js, więc przygotowuję się do migracji.Czy nodejs może generować certyfikaty SSL?

Największy problem, z którym się borykam, polega na tym, że nie wiem, jak wygenerować certyfikat CA i inne certyfikaty serwera w pliku node.js. W Pythonie jest pyOpenSSL, co jest niesamowite. Nie widzę czegoś podobnego w pliku node.js do tej pory.

Może powinienem użyć metody openssl-fork? Ale jak obsługiwać interaktywną operację w openssl.

Dziękuję.

Odpowiedz

16

W przypadku kogoś ma chcą programowo tworzenia raportów bezpieczeństwa chemicznego z node.js, mam created a nodejs module która używa OpenSSL do utworzenia klucza prywatnego i CSR.

Edytuj: Zamiast tego użyj pem. Jest znacznie bardziej kompletny i prawdopodobnie bardziej niezawodny.

Edycja2: Właściwie pem to także proste opakowanie na openssh. Dla czystego js realizacji, zajrzeć do forge

+1

Czy jest w stanie zażądać od CSR podpisania prawidłowego certyfikatu? – ayanamist

+2

Mój moduł jest teraz całkowicie przestarzały. Publikowałem go tylko dlatego, że nie wiedziałem o pem: https://www.npmjs.org/package/pem –

+0

pem właśnie spawns openssl. – andrewrk

28

Zastosowanie powłoki na świadectwie:

openssl genrsa -out server-key.pem 1024 
openssl req -new -key server-key.pem -out server-csr.pem 
openssl x509 -req -in server-csr.pem -signkey server-key.pem -out server-cert.pem 

następnie wykorzystać je w node.js

var https = require('https'); 
https.createServer({ 
    key: fs.readFileSync('server-key.pem'), 
    cert: fs.readFileSync('server-cert.pem') 
}, 
function (req,res) { 
     ... 
}) 

EDIT:

Można również spróbować do tego projektu w KMP: https://npmjs.org/package/openssl-wrapper

Znalazłem to przeszukując repozytorium NPM: https://npmjs.org/search?q=openssl

Nie próbowałem ani nie sprawdzałem tego samodzielnie, ale wygląda to na sposób wygenerowania certyfikatu za pomocą węzła, co jest oryginalnym pytaniem.

var openssl = require('openssl-wrapper'); 
var password = 'github'; 

return openssl.exec('genrsa', {des3: true, passout: 'pass:' + password, '2048': false}, function(err, buffer) { 
    console.log(buffer.toString()); 
}); 

Byłbym zainteresowany opinii. ;)

5

węzła Forge pozwolić. Nic więcej do powiedzenia. NIE używa wewnętrznie polecenia powłoki openssl.

https://github.com/digitalbazaar/forge#x509

+0

Ten jest świetny. I najważniejsze, że nie zależy od "open-ssl". –

+0

Użyłem go również do kodu produkcyjnego i działa jak urok. – Joppe

Powiązane problemy