Как именно проверяется сертификат SSL?
Я провел некоторое исследование по этому вопросу, но все еще испытываю некоторые проблемы с подключением точек относительно того, что именно происходит, когда сервер отправляет свой сертификат клиенту с точки зрения проверки подписи и корневых сертификатов.
Когда вы создаете CSR, он генерирует закрытый ключ вместе с ним, и вы отправляете его в CA, чтобы сгенерировать сертификат и подписать его, но разве CA не использует свой собственный закрытый ключ для подписи? Так в чем смысл закрытого ключа, который вы сгенерировали с помощью своей CSR?
Когда сервер отправляет свой сертификат для проверки клиентом, как именно клиент проверяет, является ли он действительным сертификатом CA. У него есть коллекция доверенных сертификатов CA, хорошо, но как именно они используются для проверки того, что это был действительный CA, подписавший сертификат сервера с использованием подписи и открытого ключа сертификата сервера? Какие вещи сравниваются, чтобы убедиться, что это не было подделано?
Есть ли смысл шифровать ваши внутренние самозаверяющие сертификаты? Как насчет внутреннего корневого сертификата? Или секретный ключ - единственный, который стоит зашифровать?
Если мы, например, не храним базу данных зашифрованных данных для нашего веб-сервиса (через SSL), будем ли мы когда-либо заботиться о сохранении нашего собственного закрытого ключа после того, как мы создадим самоподписанный сертификат, и если мы это сделаем, то почему?
1 ответ
Когда вы создаете CSR, он генерирует закрытый ключ вместе с ним
Или вы уже сгенерировали свой собственный закрытый ключ.
и вы отправляете его в CA, чтобы сгенерировать сертификат и подписать его
Вы отправляете CSR. Вы не отправляете свой закрытый ключ. Это личное. Вы не отправляете это никому.
но CA не использует свой собственный закрытый ключ для подписи?
Да.
Так в чем смысл закрытого ключа, который вы сгенерировали с помощью своей CSR?
Он соединяется с открытым ключом, содержащимся в сертификате, и является частью процесса, который используется для подтверждения того, что вы и только вы владеете этим сертификатом, поскольку только вы можете создавать цифровые подписи с этим закрытым ключом, который может быть проверен с помощью открытого ключа в сертификат.
Когда сервер отправляет свой сертификат для проверки клиентом, как именно клиент проверяет, является ли он действительным сертификатом CA. У него есть коллекция доверенных сертификатов CA, хорошо, но как именно они используются для проверки того, что это был действительный CA, подписавший сертификат сервера с использованием подписи и открытого ключа сертификата сервера? Какие вещи сравниваются, чтобы убедиться, что это не было подделано?
Сам сертификат проверяется путем проверки его цифровой подписи; проверяется на срок действия; и затем делается попытка сформировать цепочку сертификатов, используя предполагаемого подписавшего сертификат ("эмитент") и доверенные сертификаты в коллекции.
Есть ли смысл шифровать ваши внутренние самозаверяющие сертификаты?
Нет, это публичные документы. Только закрытый ключ является закрытым, а его нет в сертификате.
Как насчет внутреннего корневого сертификата?
Нет.
Или секретный ключ - единственный, который стоит зашифровать?
Да.
Если мы, например, не храним базу данных зашифрованных данных для нашего веб-сервиса (через SSL), будем ли мы когда-либо заботиться о сохранении нашего собственного закрытого ключа после того, как мы создадим самоподписанный сертификат, и если мы это сделаем, то почему?
Потому что это личное. Это важная часть вашей личности. Если вы пропустите это, другие могут выдать себя за вас.