Что такое файл PEM и как его использовать? — CloudSavvy ИТ

Человек, разблокирующий цифровой файл с ключом.Shutterstock / FGC

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

Что такое файл PEM?

PEM — это просто стандарт; они содержат текст, а формат диктует, что файлы PEM начинаются с…

—— НАЧАТЬ <тип> ——

… И в конце:

—— КОНЕЦ <тип> ——

Все, что находится между ними, закодировано в base64 (прописные и строчные буквы, цифры, + и /). Это формирует блок данных, который можно использовать в других программах. Один файл PEM может содержать несколько блоков.

Его можно использовать для представления всех видов данных, но обычно он используется для кодирования ключевых файлов, таких как ключи RSA, используемые для SSH, и сертификаты, используемые для шифрования SSL. Файл PEM сообщит вам, для чего он используется в заголовке; например, вы можете увидеть, что файл PEM начинается с…

—— НАЧАТЬ ЧАСТНЫЙ КЛЮЧ RSA ——

… За которой следует длинная строка данных, которая на самом деле является закрытым ключом RSA.

Файлы PEM с сертификатами SSL

Файлы PEM используются для хранения сертификатов SSL и связанных с ними закрытых ключей. Несколько сертификатов входят в полную цепочку SSL, и они работают в следующем порядке:

  • Сертификат конечного пользователя, который назначается вашему доменному имени центром сертификации (ЦС). Это файл, который вы используете в nginx и Apache для шифрования HTTPS.
  • До четырех дополнительных промежуточных сертификатов, выдаваемых более мелкими центрами сертификации вышестоящими органами.
  • Корневой сертификат, высший сертификат в цепочке, самоподписанный первичным ЦС.

На практике каждый сертификат перечисляется в файле PEM с использованием отдельных блоков:

—— BEGIN CERTIFICATE —— // конечный пользователь —— END CERTIFICATE —— —— BEGIN CERTIFICATE —— // промежуточный —— END СЕРТИФИКАТ —— —— НАЧАТЬ СЕРТИФИКАТ —— // корень —— КОНЕЦ СЕРТИФИКАТА ——

Эти файлы вам предоставит поставщик SSL для использования на вашем веб-сервере. Например, certbot LetsEncrypt генерирует следующие сертификаты, помещенные в / etc / letsencrypt / live / your-domain-name /:

cert.pem chain.pem fullchain.pem privkey.pem

  • cert.pem — это сертификат конечного пользователя.
  • chain.pem — остальная часть цепочки; в данном случае это только корневой сертификат LetsEncrypt.
  • fullchain.pem — это сочетание cert.pem и chain.pem. Это файл, переданный в nginx с директивой ssl_certificate.
  • Privkey.pem — это закрытый ключ RSA, созданный вместе с сертификатом.

Они также могут использовать расширение .crt; если вы самостоятельно подписали сертификат с помощью OpenSSL, вы получите файл CRT, а не PEM, хотя содержимое останется прежним, и использование будет таким же.

Чтобы использовать свои сертификаты, вам необходимо передать их в качестве параметров для вашего веб-сервера. Для nginx вы захотите указать ssl_certificate (файл PEM полной цепочки) и ssl_certificate_key (файл PEM закрытого ключа RSA) после включения SSL:

ssl_certificate /etc/letsencrypt/live/yourdomain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem;

Для Apache установка в основном такая же, но вам нужно будет использовать директивы SSLCertificateFile и SSLCertificateKeyFile:

SSLCertificateFile /etc/letsencrypt/live/yourdomain/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain/privkey.pem

Файлы PEM с SSH

Файлы PEM также используются для SSH. Если вы когда-либо запускали ssh-keygen для использования ssh без пароля, ваш ~ / .ssh / id_rsa является файлом PEM, только без расширения.

В частности, Amazon Web Services предоставляет вам файл PEM, содержащий закрытый ключ, всякий раз, когда вы создаете новый экземпляр, и вы должны использовать этот ключ, чтобы иметь возможность подключаться к новым экземплярам EC2 по SSH.

Вам нужно будет использовать флаг -i с ssh, чтобы указать, что вы хотите использовать этот новый ключ вместо id_rsa:

ssh -i keyfile.pem root @ host

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

Более простой способ — добавить закрытый ключ к вашему ssh-агенту с помощью ssh-add:

ssh-добавить keyfile.pem

Однако это не сохраняется при перезагрузке, поэтому вам нужно запустить эту команду при запуске или добавить ее в связку ключей macOS.

Конечно, вы всегда можете просто добавить свой первичный открытый ключ к ~ / .ssh / authorized_keys экземпляра после того, как вы один раз вошли в систему, но этот метод должен работать из коробки для любых новых экземпляров в будущем.

Стоит отметить, что вам все равно следует заблокировать свой SSH-сервер, даже если вы сами используете ключи.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.