Как создать .pem файлы для https-сервера

Я использую фреймворк Express в Node.js для создания веб-сервера. Я хочу, чтобы транспорт был основан на SSL.

Код для создания веб-сервера https приведен ниже.

var app = express.createServer({
  key: fs.readFileSync('./conf/key.pem'),
  cert: fs.readFileSync('./conf/cert.pem')
});
module.exports = app;

Вопрос: Как создать ключ .pem и cert.pem, требуемый экспресс?

Ответ 1

Два файла, которые вам нужны, - это сертификат SSL, закрытый в PEM, и закрытый ключ. Сертификаты и ключи, закодированные PEM, представляют собой кодированный в Base64 текст с разделителями начала и конца, которые выглядят как -----BEGIN RSA PRIVATE KEY----- или аналогичные.

Чтобы создать сертификат SSL, вам сначала нужно сгенерировать закрытый ключ и запрос подписи сертификата или CSR (который также содержит ваш открытый ключ). Вы можете сделать это различными способами, но здесь, как в OpenSSL.

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem

Это приведет к тому, что вы введете интерактивное приглашение для создания 2048-битного секретного ключа RSA и CSR, который имеет всю информацию, которую вы хотите ввести в приглашениях. (Примечание. Общее имя - это то место, где вы хотите разместить имя домена, которое вы будете использовать для доступа к вашему сайту.). Как только вы это сделаете, вы обычно отправляете эту CSR в доверенный сертификат и после того, как они подтвердят ваш запрос, вы получите сертификат.

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

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

Это даст вам сертификат (действительный в течение 10 лет) и пару ключей, который вы можете использовать в опубликованном фрагменте кода.

Ответ 2

Просто выполните следующую процедуру:

  • создайте папку, в которой вы хотите сохранить свой ключ и сертификат:

    mkdir conf


  1. перейдите в этот каталог:

    cd conf


    1. захватить этот ca.cnf файл для использования в качестве ярлыка конфигурации:

      wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf


      1. создайте новый центр сертификации, используя эту конфигурацию:

        openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem


        1. теперь, когда у нас есть наш центр сертификации в ca-key.pem и ca-cert.pem, позвольте создать закрытый ключ для сервера:

          openssl genrsa -out key.pem 4096


          1. захватить этот server.cnf файл для использования в качестве ярлыка конфигурации:

            wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf


            1. сгенерируйте запрос на подпись сертификата с помощью этой конфигурации:

              openssl req -new -config server.cnf -key key.pem -out csr.pem


              1. Подпишите запрос:

                openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem

Я нашел эту процедуру здесь, а также дополнительную информацию о том, как использовать эти сертификаты.