использование открытого ключа из сертификата приведет к ошибке - PullRequest
0 голосов
/ 10 июля 2019

Я планирую использовать auth0 с некоторыми очень специфическими требованиями.Для этого мне нужен https сервер на основе сертификата и открытого ключа.Я загрузил сертификат с auth0 и использовал следующую команду для извлечения открытого ключа:

openssl x509 -pubkey -noout -in yourfilename.cer > pubkey.pem

Затем я удалил из него --- Begin --- и --- End ---.Однако при использовании сертификата и ключа для сервера https он не работает, и я получаю эту ошибку:

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line

Мой код:

const privateKey = fs.readFileSync('./certs/pubkey.pem', 'utf-8');
const certificate = fs.readFileSync('./certs/certificate.cer', 'utf-8');
const credentials = {key: privateKey, cert: certificate};

1 Ответ

2 голосов
/ 10 июля 2019

Проблема в том, что вы пытаетесь создать закрытый ключ из файла .pem с открытым ключом. Я полагаю, что именно поэтому вы получаете ошибку из кода создания сервера.

Этот код работает, например:

const fs = require('fs');
const https = require('https');
const privateKey  = fs.readFileSync('./privateKey.key', 'utf8');
const certificate = fs.readFileSync('./certificate.crt', 'utf8');

const credentials = { key: privateKey, cert: certificate };
const express = require('express');
const app = express();

// Add test route here. 
app.get("/test", (req, res) => {
    res.status(200).send("All good");
})

const server = https.createServer(credentials, app);
server.listen(8443);

Принимая во внимание, что если мы попробуем:

const fs = require('fs');
const https = require('https');
const privateKey  = fs.readFileSync('./pubkey.pem', 'utf8');
const certificate = fs.readFileSync('./certificate.crt', 'utf8');

const credentials = {key: privateKey, cert: certificate};
const express = require('express');
const app = express();

// Add test route here. 
app.get("/test", (req, res) => {
    res.status(200).send("All good");
})

const server = https.createServer(credentials, app);
server.listen(8443);

Мы получим ошибку:

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line

Вам необходим закрытый ключ для создания вашего https-сервера, которого нет в сертификате.

...