
Инструмент с открытым исходным кодом, помогающий создать корректную цепочку SSL-сертификатов.
Описание • Как использовать • Параметры • Как это работает • Требования • Прочее • Лицензия
Это инструмент с открытым исходным кодом, который поможет вам собрать корректную цепочку SSL-сертификатов. Также он может помочь исправить неполную цепочку и загрузить все недостающие сертификаты центра сертификации. Вы также можете загрузить все сертификаты с удаленного сервера и получить правильную цепочку сертификатов.
Это просто:
# Clone this repository
git clone https://github.com/trimstray/mkchain
# Go into the repository
cd mkchain
# Install
./setup.sh install
# Run the app
mkchain -i /data/certs -o /data/chain.crt
- символическая ссылка на
bin/mkchainпомещается в/usr/local/bin- страница man помещается в
/usr/local/man/man8
Предоставляет следующие параметры:
Usage:
mkchain <option|long-option>
Examples:
mkchain --in Root.crt --in Intermediate1.crt --in Server.crt --out bundle_chain_certs.crt
mkchain --in /tmp/certs --out bundle_chain_certs.crt --with-root
mkchain -i Server.crt -o bundle_chain_certs.crt
mkchain -i https://incomplete-chain.badssl.com/ --with-root
Options:
--help show this message
--debug displays information on the screen (debug mode)
-i, --in add certificates to merge (file, multiple files, directory with ssl certificates
or remote domain)
-o, --out saves the result (chain) to a file
--with-root add root certificate to certificates chain
-o|--out- без этого параметраmkchainсохраняет выходную цепочку в каталогmkchain/chains/.
Прежде чем читать, пожалуйста, ознакомьтесь со статьей о цепочке SSL-сертификатов.
Начнем с цепочки сертификатов ssllabs. Они поставляются вместе с mkchain и находятся в каталоге example/ssllabs.com, который дополнительно содержит каталог all (содержащий все сертификаты, необходимые для сборки цепочки) и каталог server_certificate (содержащий только сертификат сервера).
Правильная цепочка для домена ssllabs.com (результат команды openssl):
Certificate chain
0 s:/C=US/ST=California/L=Redwood City/O=Qualys, Inc./CN=ssllabs.com
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
1 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
2 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
i:/C=US/O=Entrust, Inc./OU=www.entrust.net/CPS is incorporated by reference/OU=(c) 2006 Entrust, Inc./CN=Entrust Root Certification Authority
Выше показана полная цепочка, состоящая из:
Сертификат личности (сертификат сервера)
выдан для ssllabs.com центром Entrust Certification Authority - L1K
Промежуточный сертификат
выдан для Entrust Certification Authority - L1K центром Entrust Root Certification Authority - G2
Промежуточный сертификат
выдан для Entrust Root Certification Authority - G2 центром Entrust Root Certification Authority
Корневой сертификат (самоподписанный сертификат)
выдан для Entrust Root Certification Authority центром Entrust Root Certification Authority
В этом сценарии мы объединим все поставленные сертификаты. Пример запуска инструмента:
В этом сценарии мы используем только сертификат сервера и используем его для получения остальных необходимых сертификатов. Затем, как указано выше, мы объединим все предоставленные сертификаты. Пример запуска инструмента:
Чтобы создать корректную цепочку, вы должны предоставить инструменту все необходимые сертификаты (если вы установили каталог для параметра -i|--in). Это будут:
Это очень важно, потому что без них вы не сможете определить начало и конец цепочки.
Если вы укажете только файл сертификата в качестве значения
-i|--in,mkchainавтоматически загрузит все необходимые сертификаты.
Однако, если вы заглянете внутрь сгенерированной цепочки после генерации с помощью mkchain, вы не найдете там корневого сертификата.
Почему? Потому что самоподписанные корневые сертификаты не нужно/не следует включать в конфигурацию веб-сервера. Они не приносят пользы (клиенты всегда будут их игнорировать) и вызывают небольшое снижение производительности (задержка), поскольку увеличивают размер SSL-рукопожатия.
Если вы хотите добавить корневой сертификат в цепочку сертификатов, вызовите утилиту с параметром --with-root.
mkchain позволяет использовать два пути сертификации:
При генерации цепочки сертификатов mkchain отображает комментарии с информацией о сертификатах, включая любые ошибки.
Вот список всех возможностей:
Сообщение отображается при отсутствии сертификата сервера, который является началом цепочки. Это уникальный случай, потому что в этой ситуации mkchain завершает свою работу, отображая только эту информацию. Сертификат сервера — единственный сертификат, необходимый для правильного создания цепочки. Без этого сертификата корректная цепочка не будет создана.
Обратная ситуация — сообщение отображается при обнаружении действительного сертификата сервера.