Назад | Перейти на главную страницу

Получение сертификатов из хранилища ключей Java

Я использовал Java Keytool для создания domain.csr, domain.keystore и domain.cer. Мне нужно защитить домен с помощью SSL, для которого мне нужно domain.crt и domain.key. Как мне получить этих двоих? Являются domain.jks и domain.keystore оба одинаковые? В чем разница между всеми расширениями типа csr, pem, crt,и т.д ?

В основном обман Как сгенерировать файлы .key и .crt из файла JKS для сервера httpd apache .

Все расширения файлов являются лишь условностями; важно то, какие операции вы выполнили для создания файла, которые вы оставляете очень расплывчатыми. Во-первых, бессмысленно «генерировать» и CSR, и сертификат; они делают противоречивые вещи.

Java KeyStore JKS - это формат хранилища ключей, используемый Java (в настоящее время; ожидается, что он изменится в Java 9). люди довольно часто назовите эти файлы .jks но если вы использовали .keystore в такой команде, как keytool -genkeypair что не указал -storetype затем вы создали файл JKS с именем .keystore.

.cer и .crt обычно используются для файлов, содержащих свидетельство, а иногда и несколько сертификатов в формате PEM. Есть два общих формата, обычно называемые именами, которые использует OpenSSL, DER и PEM. Если вы посмотрите на файл с помощью обычных текстовых инструментов, таких как more cat type vi notepad и вы видите строку вроде -----BEGIN CERTFICATE----- (возможно, с X.509 вставлен), а затем несколько строк почти всех букв и цифр, а затем аналогичный -----END строка в формате PEM. Люди иногда используют эти расширения вместо или в дополнение к формату, например xyzcert.pem xyzcert.der xyz.crt.pem xyz.crt.der.

CSR означает запрос на подпись сертификата, который генерируется (в данном контексте) keytool -certreq. CSR используется как часть процесса получения сертификата от «реального» CA, такого как Verisign GoDaddy и т. Д. В этом случае вы обычно получаете от CA сертификат для вашего сервера И «цепочку» или промежуточный сертификат (иногда больше, чем один); вы помещаете их в один или несколько файлов, а затем импортируете их в свой JKS для использования с программами Java, такими как Tomcat и т. д. В этом случае ваши файлы сертификатов были бы созданы центром сертификации, а не вами.

Если вы не получаете сертификат от центра сертификации, по умолчанию keytool -genkeypair создает самозаверяющий сертификат, пригодный для тестирования. Вы можете поместить этот сертификат в отдельный файл с keytool -exportcert [-rfc], и это является сертификат, который вы сгенерировали, но в этом случае вы не сможете использовать CSR.

.key иногда используется для отдельного (закрытый) ключ файл в одном из нескольких форматов, используемых OpenSSL, и, следовательно, программами, использующими OpenSSL, такими как Apache httpd и nginx. Форматы OpenSSL для приватных ключей имеют варианты DER и PEM, как и сертификаты, поэтому люди также используют такие расширения, как xyzkey.pem xyzkey.der xyz.key.pem xyz.key.der.

В заключение, PKCS12 - еще один формат хранилища ключей, поддерживаемый множеством программ, включая Java, OpenSSL, Windows и Mozilla NSS. Часто расширение .p12 используется для PKCS12. (PKCS12 всегда двоичный; у него нет варианта PEM.)

TL; DR: если вам нужны отдельные файлы в формате OpenSSL для закрытого ключа и сертификата (ов) из хранилища ключей в формате JKS, сначала используйте keytool преобразовать в pkcs12, а затем использовать openssl для преобразования pkcs12 в отдельный PEM (обычно) или DER (редко).