Когда у нас есть несколько серверов, и нам нужно использовать один и тот же SSL-сертификат, например, в среде балансировки нагрузки или с использованием подстановочных SSL-сертификатов, вам необходимо будет передать сертификаты между серверами.
Как правило, передача SSL между сервером и сервером легка, если это между серверами того же типа, что и серверы Linux или серверы Windows.
Но процесс становится немного сложнее, когда дело доходит до Windows на Linux-сервере.
В этом случае нам нужно экспортировать SSL-сертификаты с сервера Windows и хранить файл .pfx.
После этого нам нужно скопировать этот файл .pfx (PKCS # 12 /) на сервер Linux и преобразовать этот файл в совместимый с Apache формат файла, например, отдельный сертификат, пакет CA и файлы закрытого ключа и использовать его.
Это также может потребоваться при переключении хостинговых компаний.
Я объясню точный процесс с пошаговыми инструкциями в этой статье о том, как вы можете успешно использовать сертификат .pfx с сервера Windows на сервере Linux с Apache.
Разница между файлами .pfx и .crt
В чем же отличие между сертификатами .pfx и .crt?
Прежде чем мы начнем наш процесс преобразования, позвольте мне дать вам краткое описание различий между файлами .pfx и .crt.
В принципе, сертификат (.crt-файл) является контейнером для открытого ключа.
Он включает в себя открытый ключ, имя сервера, дополнительную информацию о сервере и подпись, вычисленную центром сертификации (CA).
Во время SSL-рукопожатия, сервер отправляет свой открытый ключ клиенту, который фактически содержит свой сертификат, с несколькими другими цепочками сертификатов.
В других случаях .pfx-файл представляет собой архив PKCS # 12, похожий на контейнер, который может содержать множество объектов с дополнительной защитой паролем.
Обычно архив PKCS № 12 содержит сертификат (возможно, с набором сертификатов CA) и соответствующий ему секретный ключ.
Шаг 1. Передача сертификата pfx с сервера Windows на наш Linux-сервер.
Прежде всего, я экспортировал свой сертификат в сертификат .pfx с сервера Windows для своего домена.
И я скопировал этот файл pfx на свой Linux-сервер, используя SCP из своей локальной системы в папку «/ transfered_certificates /».
Вы можете использовать FTP, SCP, wget или использовать любой из этих методов для передачи сертификата pfx на ваш Linux-сервер.
# transfered_certificates]# ll -rw-r--r-- 1 root root 5409 Oct 9 10:02 c667cafbf01ffd7310db952e50eaf2b2.pfx
Шаг 2. Преобразование файла .pfx с помощью OpenSSL
Следующий шаг – извлечь наш необходимый сертификат, ключ и комплект CA из этого сертификата .pfx для домена.
Мы можем использовать команду OpenSSL для извлечения этих данных из файла pfx.
Давайте рассмотрим команды для извлечения необходимой информации из этого сертификата pfx.
Извлечение сертификата из файла pfx
Мы можем использовать эту команду для извлечения сведений о сертификате для домена из файла pfx.
# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -clcerts -nokeys -out itsecforu.ru.crt Enter Import Password: MAC verified OK
Извлечение файла ключа из файла pfx
Мы можем использовать эту команду для извлечения данных ключа для домена itsecforu.ru из файла pfx.
# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -nocerts -nodes -out itsecforu.ru.key Enter Import Password: MAC verified OK
Это действие предоставит нам наш файл ключа домена, а именно itsecforu.ru.key
Извлечение цепочки сертификатов из файла pfx
Мы можем использовать эту команду для извлечения цепочки деталей сертификата из файла pfx.
# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -out itsecforu.ru-ca.crt -nodes -nokeys -cacerts Enter Import Password: MAC verified OK
Это предоставит нам нашу цепочку сертификатов для нашего домена itsecforu.ru в файле itsecforu.ru-ca.crt.
Мы скопировали эти извлеченные файлы в папку cert в разделе «/ etc / pki / tls / certs /».
Вы можете сделать это, если это необходимо, но если нет, вы можете напрямую указать путь к папке в конфигурации Apache, в которую вы извлекли эти файлы.
# ll itsecforu.ru* -rw-r--r-- 1 root root 3689 Oct 9 10:10 itsecforu.ru-ca.crt -rw-r--r-- 1 root root 1954 Oct 9 10:06 itsecforu.ru.crt -rw-r--r-- 1 root root 1828 Oct 9 10:07 itsecforu.ru.key
Шаг 3. Добавление сертификата домена SSL для Apache
После преобразования файла .pfx вам нужно будет скопировать вновь созданные файлы на сервер Apache и отредактировать конфигурационный файл Apache для их использования.
Мы создали виртуальный хост для своего домена в папке /etc/httpd/conf.d/, чтобы включить SSL и включили эти извлеченные файлы по мере необходимости.
См. данные виртуального хоста ниже:
# cat itsecforu.ru_ssl.conf <VirtualHost <itsecforu.ru:443> DocumentRoot "/var/www/html/itsecforu.ru</span>/public_html/" ServerName www.itsecforu.ru:443 ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA SSLCertificateFile /etc/pki/tls/certs/itsecforu.ru</span>.crt SSLCertificateKeyFile /etc/pki/tls/certs/itsecforu.ru</span>.key SSLCertificateChainFile /etc/pki/tls/certs/itsecforu.ru</span>-ca.crt #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # Per-Server Logging: # The home of a custom SSL log file. Use this when you want a # compact non-error SSL logfile on a virtual host basis. CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
Вы можете изменить имена файлов и путей в соответствии с вашими файлами сертификатов:
SSLCertificateFile должен быть вашим основным файлом сертификата для вашего доменного имени.
SSLCertificateKeyFile должен быть извлечен из файла ключей.
SSLCertificateChainFile должен быть промежуточным файлом цепочки сертификатов.
Вы можете простерировать наличие ошибок в синтаксисе конфигурационного файла apache:
# apachectl configtest Syntax OK # service httpd restart