Какой файл цепочки сертификатов должен включать в себя самозаверяющий сертификат?

РЕДАКТИРОВАТЬ: Возможно, было предпочтительнее спросить об этом на сервере Fault, но моя репутация не позволила мне опубликовать более двух ссылок.: (

Я хочу, чтобы некоторые страницы, на которых на моем веб-сайте были защищены пароли, поэтому я выполнил этот, чтобы создать собственный сертификат SSL. Я также следил за этим, потому что он объясняет, как создавать самоподписанные многодоменные сертификаты (subjectAltName позволяет мне получить действительный сертификат, например .com и *.example.com, я не нашел другого способа сделать это).
Поэтому мне пришлось смешивать команды, чтобы получить то, что я хотел, и я думаю, что все в порядке с тем, что я сделал (хотя я подробно расскажу об этом позже на всякий случай).
Теперь я должен настроить Apache для прослушивания запросов на порту 443 и обеспечения безопасности SSL на соответствующих страницах. Поэтому я нашел этот.

При определении прослушивания VirtualHost на порту 443 он говорит следующее:

<VirtualHost 127.0.0.1:443>
  SSLEngine On  
  SSLCertificateFile /etc/apache2/ssl/something.crt  
  SSLCertificateKeyFile /etc/apache2/ssl/something.key  
  SSLCertificateChainFile /etc/apache2/ssl/gd_bundle.crt  
  ...
</VirtualHost>

Я думаю, что знаю, какие файлы мне нужно указывать для полей SSLCertificateFile и SSLCertificateKeyFile, но я не могу понять, что такое SSLCertificateChainFile. Все, что я нашел при поиске в сообществах Google и Stack Exchange, пока не помогло мне, поэтому я прошу его здесь:

Какой файл я должен предоставить для SSLCertificateChainFile, и как его создать, если необходимо?


Вот файлы, которые я создал, следуя инструкциям разных ссылок, с командами, которые я использовал для их создания.

  • Ключ центра сертификации (ca.key): openssl genrsa -des3 -out ca.key 1024
  • Сертификат ключа (ca.san.csr): openssl req -new -key ca.key -out ca.san.csr -config /etc/ssl/openssl.cnf
    Здесь я указал путь к файлу конфигурации, потому что мне пришлось немного изменить его, чтобы добавить subjectAltName. Я мог бы также проверить, что все прошло хорошо с openssl req -text -noout -in ca.san.csr. Все описано здесь.
  • Создание и подпись сертификата (ca.san.crt): openssl x509 -req -days 3650 -in ca.san.csr -signkey ca.key -out ca.san.crt -extensions v3_req -extfile /etc/ssl/openssl.cnf
    Опять же, файл conf необходим, потому что в нем определены subjectAltNames.
  • Ключ сервера (server.key): openssl genrsa -out server.key 1024
  • Сертификат ключа (server.san.csr): openssl req -new -key server.key -out server.san.csr -config /etc/ssl/openssl.cnf
  • Сертификат сервера (server.san.crt): openssl x509 -days 3650 -CA ca.san.crt -CAkey ca.key -set_serial 01 -in server.san.csr -req -out server.san.crt

Для SSLCertificateFile я думал, что я предоставил файл server.san.crt, для меня это выглядит наиболее логично, а также файл server.key для SSLCertificateKeyFile.
SSLCertificateChainFile похоже, запрашивает файл .crt, поэтому он может быть единственным другим .crt файлом, который у меня есть, ca.san.crt, но я действительно не уверен в этом.

Есть ли у кого-нибудь намек?
Спасибо, что прочитали это время.


Решение
В этом конкретном случае, поскольку я использую собственный сертификат, SSLCertificateChainFile не имеет большого смысла (см. Отмеченный ответ ниже). Таким образом, вам просто нужно указать один и тот же файл сертификата для обеих директив, SSLCertificateFile и SSLCertificateChainFile.
Перед тем, как использовать директивы SSL*, вам нужно сделать только одно дело с Apache. SSL по умолчанию отключен в Apache, поэтому вам нужно включить его с помощью sudo a2enmod ssl, или при перезапуске Apache вы получите сообщение об ошибке, что вы можете что-то изменить в своих файлах vHosts.
Как только вы это сделаете и перезапустите сервер, вы можете подключиться к вашим vHosts с помощью HTTPS. Ваш браузер сообщит вам, что сертификат недействителен, поскольку он подписан сам по себе, но ваше соединение будет безопасным.

Ответ 1

Мне нужны некоторые страницы, на которых пароли на моем веб-сайте должны быть безопасными

просто примечание. В качестве наилучшей практики весь веб-сайт должен быть защищен SSL. Вот сообщение в блоге, в котором объясняется, почему SSL на страницах аутентификации недостаточно: Защита вашего приложения ASP.NET MVC 4 и нового атрибута AllowAnonymous (хотя это связано с ASP MVC, другие платформы тоже затронуты).

но я не могу понять, что такое SSLCertificateChainFile

Я думаю, что это контейнер PKCS # 7, который содержит промежуточные сертификаты CA. С самозаверяющими сертификатами нет других сертификатов, поэтому (извините, я не эксперт Apache) этот файл может быть:

  • Сам самозаверенный сертификат (только публичная часть)
  • Может быть удален (этот файл не имеет смысла с самоподписанными сертификатами SSL)
  • Пусто (менее вероятно, Apache может жаловаться на неправильный формат файла).

Я бы пошел с шагом 1, передал тот же сертификат параметрам SSLCertificateFile и SSLCertificateChainFile.