2012-04-14 17 views
11

'u kullanırken Hata, HTTPS sunucusunu StartSSL sertifikası kullanılarak çalıştırılmaya çalışıyorum. Ben onlardan gerekli tüm dosyaları var ve ben createServer argümanlar onları geçirerek bunları kullanmak:Mac OSX'te Mac OSX'te HTTPS'yi başlatırken, StartSSL sertifikası

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

Ve bu aldığım hatadır.

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) 

Belki de sertifikayı PEM'e dönüştürmem gerektiğini düşündüm. Ama çalışan:

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

... benzer hatayı bana

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 

konusunda fikrin neden verir?

GÜNCELLEME: Bu yalnızca OSX'te gerçekleşir. Aynı şeyi bir Ubuntu sunucusunda çalıştırmayı denedim ve işe yarıyor.

cevap

7

Aynı sorunu yaşıyordum. ancak makinemde (macbook osx 10.7.3) node https artık kendinden imzalı bir sertifika kullanarak hatasız çalıştığını onaylayabilirim. Özellikle hata o da dosyaları bulamıyorum veya dosyalarda bir şey yok demektir

(eğer boş bir dize geçirmeden veya geçersiz dosya yolu kullanarak bunu onaylayabilir.)

öncelikle mutlak yolları kullanmayı deneyin - Örneğin FS.readFileSync (__ dirname + 'ssl.crt').

da sertifika ve anahtar dosyaları açmak ve formda veri içeren onaylamak: '----- BEGIN' ... vb

da fark olduğunu dosyalarınızı .cert ve .key iken dosyaları, belgelere .pem uzantısı ile sertifika ve anahtar dosyaları ifade eder. i anladığım kadarıyla

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

çok fark yoktur, içeriği bana oldukça benzer görünüyor, ancak bunlar saçma olabilir.

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

http://silas.sewell.org/blog/2010/06/03/node-js-https-ssl-server-example/ alınan: Burada

.pem dosyaya bir .csr dosyayı dönüştürmek için bir komut

3

Sanırım yaptığım gibi bu makaleyi https://tootallnate.net/setting-up-free-ssl-on-your-node-server izlediniz ve bende yaşadığınızla aynı sorunu yaşadım. Ancak, StartCom'dan aldığım tüm dosyaları birkaç kez kontrol ettikten sonra, yanlışlıkla bir sertifikayı ve ANSI değil, UTF8 olarak bir özel anahtar kaydettiğimi fark ettim. ANSI dosyaların kodlamasını değiştirdikten sonra, node.js bir cazibe gibi çalışmaya başladı :)