Можно ли продлить самозаверяющий сертификат SSL? Как?

18

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

Я обнаружил следующее руководство, показывающее, как обновить самозаверяющий сертификат с помощью, opensslно я не смог его использовать, так что мой браузер молча принимает его, не показывая этот экран предупреждения «Ненадежный сайт»:

  # cd /etc/apache2/ssl
  # openssl genrsa -out togaware.com.key 1024
  # chmod 600 togaware.com.key
  # openssl req -new -key togaware.com.key -out togaware.com.csr
    AU
    ACT
    Canberra
    Togaware
    Data Mining
    Kayon Toga
    Kayon.Toga@togaware.com
    (no challenge password)
  # openssl x509 -req -days 365 -in togaware.com.csr \
            -signkey togaware.com.key -out togaware.com.crt
  # mv apache.pem apache.pem.old
  # cp togaware.com.key apache.pem 
  # cat togaware.com.crt >> apache.pem 
  # chmod 600 apache.pem
  # wajig restart apache2

Мои настройки в значительной степени соответствуют описанию в этом ответе, и я использую файлы CRT и KEY (из этого руководства ) вместо файла PEM, поэтому, возможно, я что-то напутал, пытаясь применить его к своему делу.

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

Буду признателен за любую помощь ... или этот вопрос лучше подойдет для /server// или /superuser// ?

FriendFX
источник
7
Вместо того, чтобы опускать этот вопрос, дайте конкретный совет, что можно улучшить в этом вопросе.
FriendFX

Ответы:

23

По определению, самозаверяющему сертификату можно доверять только через прямое доверие , то есть то, что веб-браузеры, такие как Firefox, показывают как процесс «разрешить исключение». Один очень специфический сертификат, вплоть до последнего бита, объявляется как «доверенный». Ничто не может быть изменено в сертификате без выхода из этой модели, и, в частности, даты истечения срока действия, которая является частью данных, содержащихся в сертификате.

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

(Помимо этой наследственной вещи, обновление - это создание нового сертификата. Сертификаты являются неизменными . «Обновление» - это способ размышления о взаимосвязи между старыми и новыми сертификатами.)

Если вы хотите быть в состоянии сделать бесшумные продлений, то вам необходимо самостоятельно подписанный CA сертификат . Вы отправляете сертификаты для своих серверов из этого ЦС и просите своих клиентов доверять этому ЦС. Конечно, это требует много: CA, которому вы доверяете, это CA, который может подделать весь Интернет в ваших глазах. По сути, это решение о создании и поддержке вашего собственного ЦС, что является обязанностью и некоторой работой.


В следующий раз, когда вы создадите самоподписанный сертификат, сделайте его долговечным. Срок действия сертификатов истекает в основном для того, чтобы заставить отзыв работать (истечение срока действия сертификата предотвращает бесконечный рост CRL). Для самозаверяющего сертификата отзыва нет, поэтому вы можете сделать сертификат действительным в течение 20 лет. Или в течение 2000 лет, если на то пошло (хотя проблема 2038 года может появиться в какой-то момент, в зависимости от программного обеспечения клиента).

Том Лик
источник
Спасибо за исчерпывающий ответ! Мне интересно, что это значит в отношении учебника, с которым я связан. Это только для самозаверяющих сертификатов CA ? Наверное, я просто надеялся (и подумал после прочтения учебника), что есть способ прочитать закрытый ключ со старого и создать новый, «совместимый», который выглядит скорее как «ребенок», чем как «сирота». Хорошая аналогия, кстати!
FriendFX
@FriendFX - То, что вы хотите, не возможно. Том прав, отречение генерирует новый сертификат.
Ramhound
@Ramhound - я понимаю. Единственный открытый вопрос: какова цель этого урока тогда?
FriendFX
@FriendFX - Он был написан случайным парнем в Интернете только потому, что у них есть блог, но это не значит, что он понимает, о чем пишет. Автор просто не объясняет, что в результате обучения будет
получен
3
@FriendFX Да, этот учебник будет работать только для самозаверяющих сертификатов CA. Если вы используете одну и ту же пару ключей и тему, вы можете создать несколько сертификатов CA, каждый из которых будет удовлетворять как действующий эмитент для выданных сертификатов; эти сертификаты могут даже выдаваться различными родительскими центрами сертификации, что называется "перекрестной цепочкой".
Калрион
3

Краткий ответ: Нет.

Доверие к самозаверяющему сертификату похоже на доверие отдельному паспорту вместо страны, выдавшей этот паспорт. Если вы получите новый паспорт, он не будет автоматически доверен тому, кто доверял старому, особенно потому, что это другая вещь с другими атрибутами (номер паспорта, даты и т. Д.); нет никаких оснований для того, чтобы кто-то явно доверял старому паспорту, чтобы знать, что новому можно доверять.

Лиам Деннехи
источник
0

Если вы используете самозаверяющие сертификаты (я рекомендую использовать xca на windows), вы можете просто установить дату истечения срока действия на 7999-12-31 (это максимальное время для UTC), а начальную дату на 1970-01-01 (для совместимость с неверно настроенным временем / датой в ПК)

H3LL0
источник