2013-02-23 9 views
6

Sto cercando un modo per integrare OpenSSL e Node.js per un po 'di tempo.Diversi approcci per l'accesso a OpenSSL da Node.js

miei obiettivi sono:

  • voglio essere indipendente dalla piattaforma, quindi una soluzione dovrebbe funzionare su OS X, Linux e Windows.
  • Desidero evitare operazioni disco non necessarie. Ad esempio, una chiave privata potrebbe non essere in un file, ma in un database (potrebbe essere un esempio stupido, ma consideriamo che questo sia un requisito valido).
  • Voglio supportare la creazione di chiavi, csrs, firma di csrs, creazione di certificati, ... tutto il materiale certificato, da un capo all'altro.

Ora le opzioni che ho considerati sono:

  • utilizzare la libreria OpenSSL che è integrato all'interno di Node.js. Sfortunatamente, il modulo crittografico non fornisce le cose del certificato.
  • Utilizzare la libreria OpenSSL utilizzando un modulo esterno. Sfortunatamente, non so come farlo, probabilmente a causa della mancanza di conoscenza in C/C++.
  • Utilizzare il binario OpenSSL come processo secondario. Dato che OpenSSL è disponibile, questo dovrebbe funzionare su tutte le piattaforme. Non è bello, ma funziona.

Domanda n. 1: Come ho scritto, non ho la minima idea di come accedere direttamente alla libreria OpenSSL fornita in bundle con Node.js. Come potrei avvicinarmi a questo?

Al momento, continuo ad usare il binario come processo figlio. Sfortunatamente, ciò richiede che tutte le cose come le chiavi private e così via siano dati come file (che io voglio esplicitamente evitare), o che io passi tutto usando/dev/stdin (che non funziona su Windows).

Domanda n. 2: Come posso affrontare questo? Anche una soluzione al numero 1 risolve questo problema?

+0

Suppongo che la risposta sia "impara a scrivere collegamenti per nodejs (che include una certa conoscenza di C++)". – thejh

+0

La domanda quindi è se questo risolverà i problemi. –

+2

Anche io sono interessato a questo. Se trovi una soluzione o se vuoi aiuto nella scrittura dei bind OpenSSL per Node.js fammelo sapere. – antimeme

risposta

2

La risposta alla domanda n. 1 è che non è possibile. Senza collegamenti, è possibile accedere solo alle funzioni esposte da nodejs.

Sfortunatamente non sembra esserci un modo per aggirare/dev/stdin in Windows. Namedpipes sarebbe un'opzione ma nodejs non li supporta. Potresti riuscire a fare in modo che nodejs avvii openssl.exe in modalità interattiva e invii comandi attraverso stdin, e legga l'output tramite stdout, ma questo sembra molto inefficiente.

Quindi la risposta alla domanda n. 2 è che non è possibile risolvere il problema con Windows.

Scrivere l'associazione vincente sembra essere l'unica opzione. In realtà non è così difficile - qualcosa sono sicuro che potresti aiutare i collaboratori a collaborare.

+1

Perfetto, grazie :-) –

Problemi correlati