Получение сертификатов от Java Keystore

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

0
задан 17 October 2016 в 16:49
1 ответ

В основном дублируйте Как генерировать .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 означает Certificate Signing Request, который генерируется (в данном контексте) с помощью keytool -certreq. CSR используется как часть процесса получения сертификата от "реального" ЦС, такого как Verisign GoDaddy и т.д. В этом случае вы обычно получаете из ЦС сертификат для вашего сервера И 'цепной' или промежуточный сертификат (иногда более одного); вы помещаете их в один или несколько файлов, а затем импортируете их в JKS для использования с программами Java, такими как Tomcat и т.д. В этом случае ваш файл(ы) сертификата были бы сгенерированы ЦС, а не вами.

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

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

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

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

.
1
ответ дан 4 December 2019 в 16:28

Теги

Похожие вопросы