Создание файла сертификата из файла ключа publi c и личного ключа - PullRequest
0 голосов
/ 04 марта 2020

Я ничего не знаю о сертификатах, и сегодня после того, как снова разочаровался в ненормальной реальности создания самозаверяющего ключа для локальной разработки по HTTPS (так, чтобы локальные и удаленные имена хостов соответствовали CORS 'Access-Control) -Allow-Origin, который может иметь только одно значение и, будучи CDN, не может динамически перезаписать на основе заголовка Host клиента / партнера) Мне стало любопытно, как генерировать сертификаты PEM программно с использованием NodeJS без использования OpenSSL. Я нашел информацию, касающуюся генерации пары publi c и личного ключа:

const crypto = require('crypto');
const fs = require('fs');

crypto.generateKeyPair('rsa',
  {
    modulusLength: 4096,
    publicKeyEncoding: {
      type: 'spki',
      format: 'pem',
    },
    privateKeyEncoding: {
      type: 'pkcs8',
      format: 'pem',
    }
  },
  (error, publicKey, privateKey) => {
    if (error) {
      throw error;
    }

    fs.writeFile('pub-key.pem', publicKey, console.log);
    fs.writeFile('priv-key.pem', privateKey, console.log);
  });

Однако это всего лишь пара ключей. Интересно, возможно ли использовать Node и его криптографический API для создания файла сертификата PEM, который самозаверяющий, используя закрытый ключ из пары ключей. Это что-то, что можно сделать без переопределения половины OpenSSL в Node?

Обратите внимание, что сфера моих интересов - самоподписанный сертификат для локальной веб-разработки, буквально не имеет значения, насколько небезопасен или ненадежен оптимальным для этого является то, что браузер может его принять (потому что альтернативой слишком часто является просто отключение CORS в локальной разработке, что в лучшем случае плохо).

...