Разница между парой ключей и самозаверяющим сертификатом с помощью keytool? - PullRequest
0 голосов
/ 08 ноября 2018

Чтение некоторых URL-адресов и довольно распространенное утверждение о том, что следующая команда используется для создания пары открытый / закрытый ключ.

 keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -storepass password

Затем он продолжается и указывает, что для создания самозаверяющего сертификата используется следующая команда.

 keytool -genkey -alias selfsigned -keyalg RSA -keystore keystore.jks -storepass password -validity 360

Из того, что я вижу, единственное отличие заключается в добавлении "-validity 360".

Вопрос 1. Изменяется ли простое добавление «-validity 360» с генерации пары ключей к самозаверяющему сертификату?

Вопрос 2 - «Пары ключей» и «самозаверяющий сертификат» по сути являются синонимами?

Вопрос 3 - может ли пара ключей или «самозаверяющий сертификат» использоваться для официального CSR?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вопрос 1. Изменяется ли простое добавление «-validity 360» с генерации пары ключей к самозаверяющему сертификату?

Нет. -genkeypair (официальное название примерно с 2005 года) или менее точный синоним -genkey всегда генерирует пару ключей и самоподписанного сертификата и сохраняет приватный ключ и сертификат (вместе) в хранилище ключей. Единственное отличие -validity 360 состоит в том, используется ли указанное значение или значение по умолчанию для периода действия.

Вопрос 2 - Являются ли «пары ключей» и «самозаверяющий сертификат» синонимичными?

Нет. В этой ситуации они связаны, но это разные вещи. Пара ключей, а также отдельный privatekey и publickey, могут использоваться для некоторых вещей без какого-либо сертификата (самоподписанного или иного) с использованием хранилища , отличного от , чем хранилище ключей Java, и может использоваться самоподписанный сертификат (который включает в себя publickey) для некоторых вещей без частного ключа. Например, SSH обычно использует «голую» пару ключей для аутентификации сервера и часто для аутентификации клиента. PGP использует формат подписанного публичного ключа, который функционирует в качестве своего рода сертификата, но очень сильно отличается от сертификатов X.509 / PKIX, используемых в хранилище ключей Java, а также в SSL / TLS / HTTPS / и т. Д., И при подписании кодов (и SMIME).

В качестве аналогии, часто встречающейся в путешествиях. Рассмотрим авиабилет и чемодан с одеждой. Когда вы покупаете авиабилет, традиционно он включает в себя возможность иметь определенное количество багажа, часто несколько чемоданов с ограничением по весу, которые перевозятся с вами на вашем рейсе - хотя в настоящее время это варьируется в зависимости от самых неприязненных и спорных способов. Если хотите, вы можете полететь на самолете без чемодана, хотя это означает, что в пункте назначения у вас может не быть одежды. Также можно и довольно часто использовать чемодан для перевозки одежды без авиабилета в многих местах, не являющихся самолетами, таких как автомобиль, такси, автобус, поезд или дом родственника или друга.

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

Ключ пара может использоваться для создания CSR (*), если вы указали имя субъекта из другого источника. Но хранилище ключей Java на самом деле не хранит ключ пара плюс самоподписанный сертификат, а скорее закрытый ключ плюс самоподписанный сертификат (или другой сертификат); открытый ключ accessible хранится только в сертификате, а открытый ключ (из сертификата) необходим и используется для генерации CSR.

Самозаверяющий сертификат или любой другой сертификат сам по себе не может использоваться для создания CSR (*), поскольку CSR должен быть подписан с использованием закрытого ключа.

(*) На самом деле КСО является общей концепцией, и существует множество видов КСО с различными правилами. Я говорю здесь только о том типе CSR, который указан в PKCS10 или RFC2986 et rel , который является (единственным) генерируемым Java и большинством других распространенных инструментов, и тот, который требуется практически всем интернет-центрам сертификации.

0 голосов
/ 08 ноября 2018

Вы совершенно правы, самозаверяющий сертификат и запрос CSR начинаются с команды keytool -genkey. Разница в том, что вы будете делать с ним дальше.

Для самозаверяющего сертификата не так уж много работы. Вы можете экспортировать его, чтобы установить в качестве доверенного сертификата на стороне клиента, с keytool -export:

keytool -export -alias selfsigned -file selfsigned.cer -keystore keystore.jks -storepass password 

Для запроса CSR вы должны создать его с помощью keytool -certreq:

keytool -certreq -alias mydomain -file mydomain.csr -keystore keystore.jks -storepass password

До вас со сроком действия. Это не критично для любого маршрута, хотя с самозаверяющим сертификатом обычно требуется более 90 дней по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...