Я пытаюсь создать центр сертификации и промежуточный центр сертификации для использования в целях подписи / шифрования Office 365 в Outlook. Я смог следовать куче руководств и с помощью OpenSSL создать CA и Intermediate CA, которые генерируют сертификаты. Я сталкиваюсь с двумя проблемами:
- Когда я генерирую сертификат конечного пользователя x509 для конечного пользователя, он помечается как недействительный, поскольку промежуточный ЦС не имеет полномочий для выдачи сертификатов.
- Если вместо этого я сгенерирую сертификат конечного пользователя с помощью корневого ЦС, я смогу подписывать и шифровать электронные письма, но через некоторое время он перестает работать.
Я думаю, что проблема 2 вызвана тем, что сертификаты конечного пользователя не подписаны промежуточным центром сертификации. В Exchange Online SMIMEExpiredCertificateThumbprint возвращает отпечаток промежуточного сертификата, а не корневой CA. Я все еще могу опубликовать сертификат GAL, созданный корневым центром сертификации, в GAL и отправить несколько быстрых электронных писем, но как только Outlook синхронизируется с GAL, он видит, что сертификат не создан из промежуточного сертификата и объявляет его несанкционированным.
Я думаю, что решение проблемы 1 решит проблему 2, но я не знаю, как установить разрешения для промежуточного ЦС для выдачи сертификатов. Любая помощь?
Вот как я сейчас генерирую корневой и промежуточный CA:
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt
openssl genrsa -out ia.key 4096
openssl req -new -key ia.key -out ia.csr
openssl x509 -req -days 730 -in ia.csr -CA ca.crt -CAkey ca.key -serial -out ia.crt
А вот как генерируются клиенты:
openssl genrsa -aes128 -out email.key 2048
openssl req -new -key email.key -out email.csr
openssl x509 -req -days 365 -in email.csr -CA ia.crt -CAkey ia.key -CAcreateserial -out email.crt
openssl pkcs12 -export -in email.crt -inkey email.key -out email.pfx
openssl x509 -in email.crt -serial -noout >> email.meta
openssl x509 -in email.crt -fingerprint -noout >> email.meta