Я раскалываю волосы, пытаясь заставить HTTPS-сервер работать с сертификатом StartSSL. Я получил от них все необходимые файлы и использую их, передав их в аргументы createServer
:
var options =
{
ca: FS.readFileSync('sub.class1.server.ca.pem'),
key: FS.readFileSync('ssl.key'),
cert: FS.readFileSync('ssl.crt')
};
И это ошибка, которую я получил.
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)
Я подумал, может быть, мне нужно преобразовать сертификат в PEM. Но работает:
openssl x509 -in ssl.crt -out ssl.der -outform DER
... дает мне аналогичную ошибку
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
Любая идея, почему?
ОБНОВЛЕНИЕ: Это происходит только в OSX. Я попытался запустить то же самое на сервере Ubuntu, и он работает.