Я использовал 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 (редко).