И так повторим теорию шифрования открытыми ключами:
Генерируется приватный ключ, который хранится в защищенном месте, на основе его генерируется публичный ключ, который предоставляется тем, кто хочет передавать сообщения автору и быть уверенным в том, что никто не сможет его прочитать кроме автора. Все что закодировано публичным ключем, может быть раскодированно только приватным.
Чтобы пользователь публичного ключа был действительно уверенным, что у него оказался ключ не злоумышленника, придумали сертификаты открытых ключей. Суть в том, что третье лицо "аля власть в сертификации открытыми ключами" CA под каждый публичный ключ вставляет свою цифровую подпись, которая имеет ограниченное время жизни, и его ответсвенность в том, чтобы гарантировать, что тот кто представляется собой в сертификате, действительно яляется собою и публичный ключ, которых хранится в этом сертификате действительно его.
Формат файла для сертификата и процедуру распределения открытых ключей с помошью сертификатов с цифровыми подписями определяется стандартом X.509.
Формат файла сертификата по стандарту X.509:
(*.p12) Personal Information Exchange (PKCS #12)
(*.crt) альтернативное имя расширения *.cer, как для бинарного, так и аски-формата, этот вариант более характерен для *nix мира, а cer соответсвует Microsoft Convention.
(*.csr) Certificate Signing Request
Файл, в который генерируется на основе [только что созданного] приватного ключа публичный ключ и добавляется информации о авторе этого сертификата. В файле оказывается только что сгенерированный публичный ключ автора и информация о нем. Этот файл отправляется на подпись к certificate-authorities(CA), который своей подписью под сертификатом гарантирует, что автор является действительно тем, кем представляется в сертификате, CA из этого файла генерирует сертификат в формате X.509.
(*.key) PKCS#8
Чтобы преобразовать один формат в другой мы используем команды.
PEM to DER:
Соединение
Сервера например Apache требуют пару приватного и публичного ключа в одном файле. Также в один файл могут положить и ключи и полную цепочку. Самый простой способ создать такой общий файл это сохранить все в формате PEM, а потом просто скопировать контент каждого файла в один.
Извлечение
Нам прислали файл с цепочкой и ключами, но нам нужет только ключ, если обьединили PEMы, то тогда это просто: открыли, нашли по коментариям-отметкам и скопировали только то, что нам нужно.
Генерируется приватный ключ, который хранится в защищенном месте, на основе его генерируется публичный ключ, который предоставляется тем, кто хочет передавать сообщения автору и быть уверенным в том, что никто не сможет его прочитать кроме автора. Все что закодировано публичным ключем, может быть раскодированно только приватным.
Чтобы пользователь публичного ключа был действительно уверенным, что у него оказался ключ не злоумышленника, придумали сертификаты открытых ключей. Суть в том, что третье лицо "аля власть в сертификации открытыми ключами" CA под каждый публичный ключ вставляет свою цифровую подпись, которая имеет ограниченное время жизни, и его ответсвенность в том, чтобы гарантировать, что тот кто представляется собой в сертификате, действительно яляется собою и публичный ключ, которых хранится в этом сертификате действительно его.
Формат файла для сертификата и процедуру распределения открытых ключей с помошью сертификатов с цифровыми подписями определяется стандартом X.509.
Формат файла сертификата по стандарту X.509:
• Номер версии(текущая 3)
• Серийный номер
• Эмитент
• Субъект
• Открытый ключ субъекта (алгоритм, ключ)
• Период действия
• Дополнительные (необязательные) значения
• Алгоритм подписи сертификата
• Значение подписи сертификата
• Серийный номер
• Эмитент
• Субъект
• Открытый ключ субъекта (алгоритм, ключ)
• Период действия
• Дополнительные (необязательные) значения
• Алгоритм подписи сертификата
• Значение подписи сертификата
(*.p12) Personal Information Exchange (PKCS #12)
Файл, который является безопасным(кодирование + пароль на розархивирование/чтение) хранилищем(архивом) для приватных ключей, сертификатов, и цепочек сертификатов.
Это единственный формат, который может быть использован для експортирования сертификата и его приватного ключа в java keystore(jks)/truststore(jts).
(*.p7b) Cryptographic Message Syntax Standard (PKCS #7)
Используется как хранилище для цепочек сертификатов.
(*.cer | *.der) DER-encoded binary X.509
Формат хранилища сертификатов в бинарном виде, который является стандартом для Internet. Он не для приватных ключей, ни для цепочек.
(*.der) Distinguished Encoding Rules
(*.der) Distinguished Encoding Rules
(*.cer | *.pem) Base64-encoded X.509
Используется для тех же целей, что и предыдущий, но способ хранения данных в файле отличается (похоже занимает больше места на диске, потому что не бинарный а текстовый).
(*.pem) Privacy Enhanced Email
Файл в котором хранятся ключи/сертификаты в обычном текстовом формате. Его конек в том, что данные могут оттуда и туда копироваться как в обычный текстовый файл через GUI операционных систем. Только вот нужно следить чтобы в отметках начала и конца(-----BEGIN ENCRYPTED PRIVATE KEY----- и -----END ENCRYPTED PRIVATE KEY-----) не терять "минусы". И если мы это делали в Windows, то в файле нужно будет поудалять возрврат каретки. Тоесть в файл можно позгружать и всю цепочку сертификатов, ключи и приватные и публичные, но обычно так никто не делает, их разбивают на отдельные файлы, особенно приватный ключ находится в отдельном файле.
(*.pem) Privacy Enhanced Email
Файл в котором хранятся ключи/сертификаты в обычном текстовом формате. Его конек в том, что данные могут оттуда и туда копироваться как в обычный текстовый файл через GUI операционных систем. Только вот нужно следить чтобы в отметках начала и конца(-----BEGIN ENCRYPTED PRIVATE KEY----- и -----END ENCRYPTED PRIVATE KEY-----) не терять "минусы". И если мы это делали в Windows, то в файле нужно будет поудалять возрврат каретки. Тоесть в файл можно позгружать и всю цепочку сертификатов, ключи и приватные и публичные, но обычно так никто не делает, их разбивают на отдельные файлы, особенно приватный ключ находится в отдельном файле.
(*.crt) альтернативное имя расширения *.cer, как для бинарного, так и аски-формата, этот вариант более характерен для *nix мира, а cer соответсвует Microsoft Convention.
(*.csr) Certificate Signing Request
Файл, в который генерируется на основе [только что созданного] приватного ключа публичный ключ и добавляется информации о авторе этого сертификата. В файле оказывается только что сгенерированный публичный ключ автора и информация о нем. Этот файл отправляется на подпись к certificate-authorities(CA), который своей подписью под сертификатом гарантирует, что автор является действительно тем, кем представляется в сертификате, CA из этого файла генерирует сертификат в формате X.509.
(*.key) PKCS#8
Чеще всего в таком файле хранятся приватные ключи. Но также могут храниться и публичные. Закодированы они могут быть как в формате pem, так и der.
Существует 4 основых манипуляции над сертификатами:
- Просмотр.
- Преобразование.
- Соединение.
- Извлечение.
Чтобы просмотеть содержимое сертификата будь то der или pem, оба нужно декодировать в человекочитаемый вид.
Прочитать PEM:
Прочитать DER:
Существует 4 основых манипуляции над сертификатами:
- Просмотр.
- Преобразование.
- Соединение.
- Извлечение.
Чтобы просмотеть содержимое сертификата будь то der или pem, оба нужно декодировать в человекочитаемый вид.
Прочитать PEM:
openssl x509 -in cert.pem -text -noout openssl x509 -in cert.cer -text -noout openssl x509 -in cert.crt -text -noout
openssl x509 -in certificate.der -inform der -text -noout
Чтобы преобразовать один формат в другой мы используем команды.
PEM to DER:
openssl x509 -in cert.crt -outform der -out cert.derDER to PEM:
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
Соединение
Сервера например Apache требуют пару приватного и публичного ключа в одном файле. Также в один файл могут положить и ключи и полную цепочку. Самый простой способ создать такой общий файл это сохранить все в формате PEM, а потом просто скопировать контент каждого файла в один.
Извлечение
Нам прислали файл с цепочкой и ключами, но нам нужет только ключ, если обьединили PEMы, то тогда это просто: открыли, нашли по коментариям-отметкам и скопировали только то, что нам нужно.


