NodeJS - Как сгенерировать сертификат и закрытый ключ с помощью node-opcua-pki

Я пытаюсь установить соединение OPCUA между моим приложением NodeJS (на стороне клиента) и сервером OPCUA (не на основе NodeJS). Я использую модуль node-opcua, и у меня нет проблем с подключением к серверу OPCUA без шифрования.

Однако я хочу, чтобы мое соединение было защищенным и зашифрованным. Я пытаюсь использовать модуль node-opcua-pki для создания сертификата и закрытого ключа, но я не знаю, как использовать этот модуль и где запустить эту команду.

Нужно ли мне запускать команду для генерации сертификата и закрытого ключа в командной строке или в моем приложении NodeJS?

Заранее спасибо за помощь!


person Frédéric Uhrweiller    schedule 20.10.2020    source источник


Ответы (1)


используя командную строку

$ npx node-opcua-pki certificate -o mycertificate.pem

это создаст самоподписанный сертификат mycertificate.pem в текущей папке.

это также создаст pki и связанный с ним закрытый ключ в .\certificates\PKI\own\private\private_key.pem, если он еще не существует.

В командной строке доступно множество параметров, позволяющих указать расположение pki или конкретную строку темы для сертификата.

$  npx node-opcua-pki certificate --help

программно

const certificateFolder = path.join(process.cwd(), "certificates");

const certificateFile = path.join(certificateFolder, "server_certificate.pem");

const certificateManager = new opcua.OPCUACertificateManager({
   rootFolder: certificateFolder,
});
await certificateManager.initialize();

if (!fs.existsSync(certificateFile)) {
   await certificateManager.createSelfSignedCertificate({
       subject: "/CN=MyCommonName;/L=Paris",
       startDate: new Date(),
       dns: [],
       validity: 365 * 5, // five year
       applicationUri: "Put you application URI here ",
       outputFile: certificateFile,
   });
}
const privateKeyFile = certificateManager.privateKey;
console.log("certificateFile =", certificateFile);
console.log("privateLeyFile =", privateKeyFile);
person Etienne    schedule 20.10.2020