Назад | Перейти на главную страницу

Нужно ли Apache знать о промежуточных сертификатах для аутентификации клиента?

У меня следующая иерархия сертификатов. И мне нужно выполнить аутентификацию клиента на Apache.

.
└── root (CA) - self signed
    ├── intermediate 1 (CA)
    |   ├── client1
    |   ├── client2
    └── intermediate 2 (CA)
        ├── client3
        └── client4

Кто должен хранить промежуточные сертификаты (клиент или сервер)?

Я бы предпочел хранить на сервере только корневой ЦС, чтобы проверять на него все клиентские сертификаты. Основная причина в том, что список промежуточных центров сертификации может расти, и я не хочу постоянно обновлять сертификаты, хранящиеся в конфигурации Apache.

Возможно ли это технически? Требует ли протокол SSL от клиентов для отправки всей цепочки?

Одна мысль по этому поводу. Насколько я понимаю, когда клиент аутентифицирует сервер, сервер отправляет клиенту всю цепочку. Я надеюсь, что это симметрично, и когда серверу необходимо аутентифицировать клиента, клиент несет ответственность за отправку всей цепочки.

Когда клиент аутентифицирует сервер, сервер отправляет цепочку, которая определена в SSLCertificateChainFile, что является вашей ответственностью как администратора сервера. Таким образом, когда клиент идентифицирует себя, он также отвечает за отправку всей цепочки. Apache нужно знать только о сертификате CA, который вы определяете в SSLCACertificateFile. Вы можете по своему усмотрению также определять здесь цепочки, что сделает Apache более снисходительным по отношению к клиентам, которые сами не отправляют цепочки.

При подписании сертификатов для пользователей убедитесь, что пользователю предоставлена ​​правильная цепочка. Ваш пользователь может создать .p12, используя следующую команду OpenSSL:

openssl pkcs12 -export -in ${SIGNED_CERT} -inkey ${PRIVATE_KEY} \
     -name ${USERNAME} -out ${OUTPUT_P12} -certfile ${PROVIDED_CHAIN}