2011-06-02 28 views
11

Genel anahtarlarla Node.JS (v0.4 +) uygulamasında imzaları doğrulamanın iyi bir yolu var mı?Düğümün doğrulanması için ortak anahtarın kullanılması Node.JS kripto

Geçerli kripto modülü bunu, sertifikalarla değil, ortak anahtarlarla sağlar. Örneğin: CERT

var crypto = require("crypto"); 

verifier = crypto.createVerifier("sha1"); 
verifier.update("signed data"); 
verifier.verify(CERT, signature); 

Değişken ihtiyaçlarını ama elimde genel anahtar ve bir sertifika (Ben genel anahtar o çekilir tahmin) sertifikası imzalanacak. Bunu başarmak için

Sadece katı yolu bir doğrulamak için gereken dosyalar halinde veriler, ortak anahtar ve imza içeriğini damping ve openssl dgst

fs.writeFileSync("public.key", pubkey); 
fs.writeFileSync("sig.sha1", signature); 
fs.writeFileSync("data.txt", data); 
exec("openssl dgst -sha1 -verify public.key -signature sig.sha1 data.txt", ...) 

yürütmek Ama her defasında dosyaları oluşturma (ve silme) gibi görünüyor İmza toplam atık gibi görünüyor. bunu daha iyi nasıl yapılacağı

Herhangi iyi bir fikir?

GÜNCELLEME 2011-08-03

node.js v0.5 içinde Kripto modülü Neden sadece ortak anahtarınızı yapmayız both with certificates and public keys (RSA veya X.509)

+0

Eh, openssl gitmek yoludur eminim. Uygulamaların dosyaları kullanmasına izin vermeli mi yoksa uygulama dosyalarını mı kullanmalı? Bunu ne sıklıkla yapacaksın? – jcolebrand

+0

Düzenli olarak ama çok sık değil. Bu çözümle yaşayabilirim ama özellikle çok daha zarif crypto.verifier ile karşılaştırıldığında çok yanlış geliyor. Dosyaları kullanmamayı tercih ederim. – Andris

+0

İlk argüman olarak bir ortak anahtarı geçmek istiyorum ama b64 kodlanmış dizgenin olması gerektiğinden emin değilim, '---- BEGIN KEY ----' ve '----- END ile sarılmış dize ANAHTAR ---- 'veya yeni Tampon (the_string,' base64 '). Hepsini denedim ama kripto hala SERTİFİKA arıyor. Nasıl anlatacağımı açık bir anahtardan doğrudan geçiyorum? Ben Openssl özel anahtar PEM'den gelen genel anahtarı ayıklanması üzerinde tükürür gördü ve hata mesajları gittiler olarak –

cevap

1

doğrulama sağlar ve Kendinden imzalı bir sertifikaya koymak? Sonra düğümün kripto modülü sizin için iyi çalışır.

http://www.akadia.com/services/ssh_test_certificate.html

bunu yaparken bir Openssl alt işlemi bölmek çok daha verimli olacağını düşünürdüm.

+0

Ortak anahtarlı bir sertifika oluşturmak mümkün mü? Tüm örnekler özel değil ortak anahtarlar kullanıyor. – Andris

+0

Tüm örnekler bir çift 2 anahtar içerir, 1 özel, 1 genel. CSR'yi oluşturduğunuzda, CSR bir sertifika içerir ve bir sertifika bir ortak anahtar içerir. Burada "genrsa" nın aslında bir çift bağlı anahtar, 1 genel ve 1 özel oluşturduğunu belirten bir belge var. http://www.openssl.org/docs/HOWTO/keys.txt. İlk paragraf: "Bir genel anahtar ayrı oluşturulan olması gerekmez böylece OpenSSL ile özel anahtar, hem de genel anahtar bilgileri içerir." –