bg-tutorials

Как установить SSL-сертификат на серверах macOS

Это руководство объясняет, как установить SSL-сертификат на macOS. В нём рассматривается импорт сертификата и CA bundle через Keychain Access, более старый рабочий процесс macOS Server (Server.app), который многие существующие конфигурации всё ещё используют, а также реалистичный путь для текущих версий macOS, где Server.app больше нет.

Важно: Apple прекратила поддержку продукта macOS Server (Server.app). Веб-сервисы, почта и большинство служб хостинга были удалены в 2018 году, а сам продукт был снят с производства в апреле 2022 года. Последняя версия, 5.12.2, работает только вплоть до macOS Monterey. Ниже описаны оба метода: устаревший через Server.app и актуальный подход.

Создание CSR-кода

Чтобы активировать SSL-сертификат, вы отправляете данные о своём домене и организации в удостоверяющий центр (CA). Этот стандартный шаг называется запросом на подпись сертификата, или CSR. У вас есть два варианта:

Отправьте CSR при оформлении заказа. CA проверит ваш запрос и, после одобрения, подпишет и выпустит сертификат. Вы получите файлы сертификата по электронной почте. После этого переходите к установке ниже.

Установка SSL-сертификата на macOS

Шаги ниже следуют исходному рабочему процессу macOS Server (Server.app): импорт CA bundle и сертификата через Keychain Access, затем назначение сертификата службам в приложении Server. Если на вашем Mac больше нет приложения Server, перейдите к разделу Текущая macOS: без Server.app после Шага 2, поскольку импорт в Keychain по-прежнему применим.

Шаг 1: Подготовьте файлы сертификата

Загрузите ZIP-архив, отправленный вам CA, и распакуйте его. У вас должен быть файл с расширением .crt (ваш основной сертификат) и файл с расширением .ca-bundle (корневой и промежуточные сертификаты, также называемые CA bundle). Вам также понадобится приватный ключ, созданный вместе с CSR.

Шаг 2: Добавьте файл .ca-bundle в Keychain Access

Начните с CA bundle. Он содержит корневой и промежуточные сертификаты, которые браузеры и клиенты используют для построения цепочки доверия к доверенному корню. Без них посетители могут увидеть предупреждение «небезопасно» или о недоверенном сертификате.

  1. Найдите файл с расширением .ca-bundle.
  2. Откройте Keychain Access (найдите его через Spotlight или в разделе Applications > Utilities).
  3. Перетащите файл .ca-bundle в окно Keychain Access. Добавьте его в связку ключей System, чтобы он применялся ко всем пользователям и службам.
  4. Чтобы подтвердить импорт, введите название вашего CA в строке поиска. Вы должны увидеть в списке промежуточные сертификаты и корневой сертификат.

То же самое можно сделать через Terminal, что полезно на сервере без графического интерфейса или удалённом сервере. Это импортирует bundle в системную связку ключей:

sudo security import yourdomain.ca-bundle -k /Library/Keychains/System.keychain

Шаг 3: Добавьте основной сертификат (устаревший Server.app)

Этот шаг использует прекращённое приложение Server.app. Если на вашем Mac его больше нет, смотрите вместо этого следующий раздел.

  1. Откройте приложение Server и перейдите в Server > Certificates.
  2. На главной странице дважды щёлкните ожидающий сертификат (тот, что был создан при генерации CSR).
  3. В открывшемся окне перетащите ваш файл .crt, затем нажмите OK.
  4. Теперь действительный сертификат отображает имя издателя и дату истечения срока действия.

Шаг 4: Назначьте сертификат своим службам (устаревший Server.app)

В приложении Server найдите настройку Secure services using. Используйте выпадающее меню, чтобы выбрать свой SSL-сертификат. Чтобы назначить его конкретным службам, например общему доступу к файлам или почте, нажмите Custom и выберите нужные службы для защиты. По завершении нажмите OK.

Теперь ваш SSL-сертификат установлен. Чтобы подтвердить результат и проверить наличие распространённых проблем, используйте наш SSL Checker.

Текущая macOS: без Server.app (используйте Keychain вместе с Apache или nginx)

Поскольку Apple прекратила поддержку Server.app, в текущих версиях macOS нет экрана Server > Certificates и нет назначения сертификата для отдельных служб. Импорт сертификата в Keychain Access (Шаг 2) по-прежнему применим для системного доверия, но HTTPS вы настраиваете напрямую через веб-сервер. macOS поставляется со встроенным Apache (httpd), а nginx доступен через Homebrew. Разместите сертификат и ключ там, где сервер сможет их прочитать, например в /etc/ssl/, и убедитесь, что приватный ключ доступен для чтения только root.

Вариант А: встроенный Apache (httpd)

Отредактируйте файл /etc/apache2/httpd.conf и уберите символ # в начале этих строк, чтобы загрузились модули SSL и конфигурация SSL:

LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /private/etc/apache2/extra/httpd-ssl.conf

Сначала создайте файл полной цепочки (ваш сертификат, за которым следует CA bundle), который директива SSLCertificateFile ожидает в Apache 2.4.8 и новее:

cat yourdomain.crt yourdomain.ca-bundle > yourdomain_fullchain.crt

Затем отредактируйте файл /etc/apache2/extra/httpd-ssl.conf и убедитесь, что он прослушивает порт 443. Этот файл уже содержит стандартный блок <VirtualHost _default_:443> с самоподписанным сертификатом, поэтому либо отредактируйте этот блок, либо добавьте виртуальный хост, приведённый ниже, и закомментируйте стандартный, чтобы избежать двух хостов на порту 443:

<VirtualHost *:443>
    ServerName www.yourdomain.com
    DocumentRoot "/Library/WebServer/Documents"

    SSLEngine on
    SSLCertificateFile    /etc/ssl/yourdomain_fullchain.crt
    SSLCertificateKeyFile /etc/ssl/private/yourdomain.key

    SSLProtocol         -all +TLSv1.2 +TLSv1.3
    SSLHonorCipherOrder off
</VirtualHost>

Пути выше предполагают, что приватный ключ находится в /etc/ssl/private/, которого может не быть в macOS по умолчанию. Сначала создайте его и убедитесь, что ключ доступен для чтения только root:

sudo mkdir -p /etc/ssl/private
sudo chmod 600 /etc/ssl/private/yourdomain.key

Проверьте конфигурацию перед перезапуском, затем перезапустите Apache:

sudo apachectl configtest
sudo apachectl restart

В результате проверки вы должны увидеть Syntax OK. Если возникнет ошибка, исправьте её перед перезапуском, чтобы сервер не завершился с ошибкой при старте.

Вариант Б: nginx

Если вы используете nginx, укажите файл полной цепочки и ключ в блоке сервера, затем перезагрузите конфигурацию:

server {
    listen 443 ssl;
    server_name www.yourdomain.com;

    ssl_certificate     /etc/ssl/yourdomain_fullchain.crt;
    ssl_certificate_key /etc/ssl/private/yourdomain.key;

    ssl_protocols TLSv1.2 TLSv1.3;
}
sudo nginx -t
sudo nginx -s reload

Для управления конфигурацией на парке компьютеров Mac (роль, которую раньше выполнял Profile Manager) используйте современное решение MDM. Чтобы проверить установленный сертификат с любого устройства, используйте наш SSL Checker.

Часто задаваемые вопросы

Существует ли ещё macOS Server?

Нет. Apple удалила большинство служб хостинга из macOS Server в 2018 году и прекратила поддержку самого приложения в апреле 2022 года. Последний выпуск, версия 5.12.2, работает только вплоть до macOS Monterey и не поддерживается на более новых версиях macOS. В текущих версиях macOS вы импортируете сертификаты в Keychain Access и настраиваете Apache или nginx напрямую, вместо использования приложения Server.

Как установить SSL-сертификат на macOS без приложения Server?

Импортируйте CA bundle и ваш сертификат в Keychain Access, чтобы система доверяла цепочке, затем укажите вашему веб-серверу путь к сертификату и приватному ключу. macOS включает Apache (настраивается в /etc/apache2/), а nginx можно установить через Homebrew. Укажите SSLCertificateFile и SSLCertificateKeyFile в Apache, или ssl_certificate и ssl_certificate_key в nginx, затем проверьте конфигурацию и перезапустите сервер.

Где macOS хранит SSL-сертификаты?

Доверенные сертификаты хранятся в связках ключей, управляемых через Keychain Access. Общесистемные сертификаты хранятся в связке ключей System, расположенной по пути /Library/Keychains/System.keychain. Файлы сертификата и приватного ключа, которые читает ваш веб-сервер, можно разместить в другом месте, например в /etc/ssl/, при условии, что конфигурация сервера указывает на них, а ключ остаётся доступным для чтения только root.

Нужно ли устанавливать CA bundle на macOS?

Да. CA bundle содержит промежуточные и корневой сертификаты, которые позволяют браузерам и клиентам построить полную цепочку доверия. Если пропустить этот шаг, некоторые посетители увидят предупреждение о недоверенной или неполной цепочке сертификатов. Импортируйте файл .ca-bundle в Keychain Access, либо объедините его с вашим сертификатом в один файл полной цепочки для Apache или nginx.

Как проверить, что сертификат установлен правильно?

Откройте ваш сайт в браузере и проверьте значок замка, либо запросите у сервера сертификат через Terminal с помощью OpenSSL:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Эта команда выводит издателя и сроки действия. Вы также можете выполнить полную внешнюю проверку с помощью нашего SSL Checker.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.