Полезные команды по работе с SSL-сертификатами при помощи OpenSSL
Иногда приходится работать с SSL-сертификатами и каждый раз приходится вспоминать, либо искать информацию как сделать то или иное действие с сертификатами при помощи OpenSSL.
Иногда приходится работать с SSL-сертификатами и каждый раз приходится вспоминать, либо искать информацию как сделать то или иное действие с сертификатами при помощи OpenSSL.
Файл .pfx, который находится в формате PKCS#12, содержит сертификат SSL (открытые ключи) и соответствующие закрытые ключи. Иногда необходимо извлечь сертификат и закрытый ключ в незашифрованный текстовый формат, чтобы использовать их в другой системе.
Опишу как установить коммерческий (commercial) SSL-сертификат на почтовый сервер Zimbra Collaboration 8.8.15 GA Release.
В случае если у вас имеется только PFX файл сертификата, то при помощи OpenSSL можно легко извлечь закрытый ключ сертификата, сам сертификат и цепочку сертификатов CA:
openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key> openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer> openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>
Копируем файлы сертификатов в каталог /opt/zimbra/ssl/zimbra/commercial/ и назначаем права доступа для них.
chown zimbra:zimbra -R /opt/zimbra/ssl/zimbra/commercial/* chmod 640 -R /opt/zimbra/ssl/zimbra/commercial/*
[stextbox id=’warning’]ВНИМАНИЕ! прошу обратить внимание что путь установки Zimbra может отличаться от моего, поэтому учитывайте это при копировании сертификатов.[/stextbox]
Выполняем верификацию сертификатов:
sudo su - zimbra -c "zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/clientcert.key /opt/zimbra/ssl/zimbra/commercial/clientcert.cer /opt/zimbra/ssl/zimbra/commercial/cacerts.cer"
прим. Успешная верификация сертификата выглядит вот так:
** Verifying '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' against '/opt/zimbra/ssl/zimbra/commercial/clientcert.key' Certificate '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' and private key '/opt/zimbra/ssl/zimbra/commercial/clientcert.key' match. ** Verifying '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' against '/opt/zimbra/ssl/zimbra/commercial/cacerts.cer' Valid certificate chain: /opt/zimbra/ssl/zimbra/commercial/clientcert.cer: OK
Рассмотрим как реализовать перехват пользовательских HTTPS-запросов в сеть интернет для дальнейшего анализа и учета их. Все ниже описанные действия производятся на Debian 9 Stretch с установленным прокси-сервером Squid 4.9.
Частенько сталкиваюсь с необходимостью конвертирования сертификата .crt, .ca-bundle в формат PFX. И каждый раз пытаюсь вспомнить как это сделать в Linux посредством OPENSSL.