Создать промежуточный центр сертификации, который может выдавать сертификаты?

541
Nuvious

Я пытаюсь создать центр сертификации и промежуточный центр сертификации для использования в целях подписи / шифрования Office 365 в Outlook. Я смог следовать куче руководств и с помощью OpenSSL создать CA и Intermediate CA, которые генерируют сертификаты. Я сталкиваюсь с двумя проблемами:

  1. Когда я генерирую сертификат конечного пользователя x509 для конечного пользователя, он помечается как недействительный, поскольку промежуточный ЦС не имеет полномочий для выдачи сертификатов.
  2. Если вместо этого я сгенерирую сертификат конечного пользователя с помощью корневого ЦС, я смогу подписывать и шифровать электронные письма, но через некоторое время он перестает работать.

Я думаю, что проблема 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 
0

1 ответ на вопрос

0
Nuvious

В общем, я не обязательно выяснил, как решить проблему с OpenSSL, но обнаружил, что GnuTLS запрашивает использование сертификата таким способом, с которым легко работать.

Я генерирую корневой CA следующим образом:

certtool --generate-privkey --bits 4096 --outfile ca.key certtool --generate-self-signed --load-privkey ca.key --template ca.vars --outfile ca.crt 

Где мой ca.vars выглядит так:

organization = [Company Name] unit = [Org Unit] locality = [City] state = [State] country = [Country Code] challenge_password = [password] password = [password] expiration_days = 1825 serial = 1 ca cert_signing_key crl_signing_key cn = '[Company Name] Root CA 000001' 

ПРИМЕЧАНИЕ. Пароль указан в файле ca.vars, который небезопасен; но для моей реализации скрипт генерирует файл vars, а затем удаляет его с помощью инструмента удаления srm. Если вы не используете скрипты для генерации файлов vars, просто опустите строки пароля и challenge_password, и вам будет предложено.

Затем промежуточные СА следующие:

certtool --generate-privkey --bits 4096 --outfile ia.key certtool --generate-request --template ia.vars --load-privkey ia.key --outfile ia.csr certtool --generate-certificate --template ia.vars --load-request ia.csr --load-ca-certificate ca.crt --load-ca-privkey ca.key --outfile ia.crt 

Разница между ca.vars и ia.vars заключается в том, что я установил срок действия 365 и добавил следующую строку:

path_len = 1 

Оттуда я могу использовать вышеупомянутый сценарий с openssl и центрами сертификации ia_ [sign / encrypt] для генерации сертификатов x509, которые я могу использовать в Outlook с Office 365 для подписи / шифрования электронной почты. Я вставлю это снова только для справки:

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 

Надеюсь, это поможет кому-то, кроме меня! :)

Похожие вопросы