Почему экспорт openssl pkcs12 добавляет дополнительный корневой сертификат привязки, дублирующий сертификат сервера в Mac OS X
[Первоначально опубликовано в Slack Overflow, но ветка комментариев жаловалась на неподходящее место.]
Мы работаем над переходом с SSL-сертификатов StartCom на Let's Encrypt и пытаемся настроить его на автоматическую работу с macOS Server + Apache HTTPD. Из командной строки ( security import
) MacOS Server не принимает прямые .pem
файлы - вы должны предоставить ему .p12
файл, из которого он извлекает .pem
файлы для настройки в Apache. Раздражает и бессмысленно, но это то, с чем нам приходится жить сейчас.
Чтобы создать этот .p12
файл, мы должны выполнить эту команду:
openssl pkcs12 -export \ -inkey /etc/letsencrypt/live/example.com/privkey.pem \ -in /etc/letsencrypt/live/example.com/cert.pem \ -certfile /etc/letsencrypt/live/example.com/chain.pem \ -out /etc/letsencrypt/live/example.com/example.com.p12
И вот где это становится странным. Выходной example.com.p12
файл имеет example.com
сертификат дважды, за ним следует промежуточный сертификат Let's Encrypt, за которым следует ненужный самозаверяющий сертификат привязки DST Root CA X3 (который по умолчанию установлен во всех браузерах) и, наконец, закрытый ключ., В результате рукопожатие Apache SSL включает в себя сертификат сервера дважды, а также промежуточный сертификат CA и корневой сертификат (который он не должен отправлять), что приводит к появлению предупреждений в тестере Qualys SSL Labs.
Мы заглянули внутрь cert.pem
, и он содержит только сертификат сервера (и только один раз). chain.pem
содержит только промежуточный сертификат CA (не корневой якорь или сертификат сервера). privkey.pem
содержит только закрытый ключ Таким образом openssl pkcs12 -export
, дублирование сертификата сервера, а затем переход к дополнительному этапу поиска корневого сертификата привязки и его добавления.
Если мы запустим эту же команду в openSUSE Linux, выходной .p12
файл будет иметь только сертификат сервера (один раз), промежуточный сертификат CA и закрытый ключ. Нет корневого якоря.
Мы попробовали следующие варианты и не увидели никакой разницы в выходе:
openssl pkcs12 -export \ -inkey /etc/letsencrypt/live/example.com/privkey.pem \ -in /etc/letsencrypt/live/example.com/fullchain.pem \ -out /etc/letsencrypt/live/example.com/example.com.p12 openssl pkcs12 -export \ -inkey /etc/letsencrypt/live/example.com/privkey.pem \ -certfile /etc/letsencrypt/live/example.com/fullchain.pem \ -out /etc/letsencrypt/live/example.com/example.com.p12
Единственный способ, которым я могу продублировать некорректное поведение удвоенного сертификата сервера на компьютере с Linux, - это сделать следующее (но оно по-прежнему не включает в себя корневую привязку):
openssl pkcs12 -export \ -inkey /etc/letsencrypt/live/example.com/privkey.pem \ -in /etc/letsencrypt/live/example.com/cert.pem \ -certfile /etc/letsencrypt/live/example.com/fullchain.pem \ -out /etc/letsencrypt/live/example.com/example.com.p12
(Обратите внимание на использование fullchain.pem
вместо chain.pem
в сочетании с использованием cert.pem
... имеет смысл, почему сертификат сервера будет дублироваться, но это не команда, что мы используем на Mac OS X.)
Любая идея, как получить openssl pkcs12 -export
правильные вещи здесь?
0 ответов на вопрос
Похожие вопросы
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
3
Ускорение загрузки OS X на годичной MBP
-
3
Как повторно связать резервную копию Airport Time Machine после перехода на новый Mac?
-
-
6
Как вы отключите звук запуска на Mac?
-
5
Почему мой Macbook сильно нагревается при использовании Boot Camp?
-
7
Есть ли в Mac OS X эквивалент Ctrl + Tab?
-
6
Способ переноса данных Time Machine на новый диск
-
13
Сброс положения Mac OS X Windows после отсоединения внешнего монитора
-
10
Программное обеспечение для резервного копирования для Mac OS X
-
5
Как удалить и удалить .kext в Mac OS X?