
Установка cfssl в Unix/Linux
CFSSL — это утилита для работы с PKI/TLS, которая позволяет подписывать, проверять и объединять TLS сертификаты. Данную утилиту создали и поддреживают в CloudFlare компании. Для использования данной программы стоит установить GO 1.8+.
Установка Go/Golang в Unix/Linux
Ну а сейчас, переходим к установки.
Установка cfssl в Linux
Скачиваем 2 файла:
$ wget -q --show-progress --https-only --timestamping \ https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 \ https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
PS: Имеется 2 вида разрядности для Linux:
- cfssljson_linux-386 и cfssl_linux-386.
- cfssljson_linux-amd64 и cfssl_linux-amd64.
- cfssljson_linux-arm и cfssl_linux-arm.
Выставим права:
# chmod +x cfssl_linux-amd64 cfssljson_linux-amd64
Перестим файлы:
# mv cfssl_linux-amd64 /usr/local/bin/cfssl # mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
Проверим версию:
$ cfssl version
Можно приступить к использованию.
Установка cfssl в Mac OS X
Имеется пару способов как установить данное ПО на ваш сервер.
-=== СПОСОБ 1 ===-
Скачиваем 2 файла:
$ wget -q --show-progress --https-only --timestamping \ https://pkg.cfssl.org/R1.2/cfssl_darwin-amd64 \ https://pkg.cfssl.org/R1.2/cfssljson_darwin-amd64
PS: Имеется 2 вида разрядности для Mac OS X:
- cfssljson_darwin-386 и cfssl_darwin-386.
- cfssljson_darwin-amd64 и cfssl_darwin-amd64.
Выставим права:
# chmod +x cfssl*
Перестим файлы:
# mv cfssl_darwin-amd64 /usr/local/bin/cfssl && mv cfssljson_darwin-amd64 /usr/local/bin/cfssljson
Проверим версию:
$ cfssl version
-=== СПОСОБ 2 ===-
Так же, можно использовать brew чтобы установить ПО:
$ brew install cfssl
Можно приступить к использованию.
Установка cfssl на другие Unix/Linux ОС
Для того чтобы собрать cfssl требуется Go 1.8+ и правильно установленный GOPATH. После чего, выполняем:
$ git clone git@github.com:cloudflare/cfssl.git $GOPATH/src/github.com/cloudflare/cfssl $ cd $GOPATH/src/github.com/cloudflare/cfssl $ make
Настройка cfssl в Unix/Linux
Пока не заметил никаких настроек для этой утилиты. Если найду что-то интересное, дополню этот раздел.
Использование cfssl в Unix/Linux
Создаем папку:
$ mkdir tmp && cd $_
Создаем центр сертификации (certificate authority или CA):
$ cat > ca-config.json << EOF { "signing": { "default": { "expiry": "8760h" }, "profiles": { "kubernetes": { "usages": ["signing", "key encipherment", "server auth", "client auth"], "expiry": "8760h" } } } } EOF
Создаем CSR подпись:
$ cat > ca-csr.json << EOF { "CN": "Kubernetes", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "UA", "L": "Kiev", "O": "Kubernetes", "OU": "CA", "ST": "Kiev" } ] } EOF
Можно добавить хост(ы), например:
{ "hosts": [ "linux-notes.org", "www.linux-notes.org" ], "CN": "www.linux-notes.org", "key": { "algo": "rsa", "size": 2048 }, "names": [{ "C": "UA", "L": "Kiev", "O": "Kubernetes", "OU": "CA", "ST": "Kiev" }] }
Создаем сертификат:
$ cfssl gencert -initca ca-csr.json | cfssljson -bare ca
Получаем примерный вывод:
2018/11/15 16:49:38 [INFO] generating a new CA key and certificate from CSR 2018/11/15 16:49:38 [INFO] generate received request 2018/11/15 16:49:38 [INFO] received CSR 2018/11/15 16:49:38 [INFO] generating key: rsa-2048 2018/11/15 16:49:38 [INFO] encoded CSR 2018/11/15 16:49:38 [INFO] signed certificate with serial number 352959392755430077750949756394023000115317850199
Другие вспомогательные команды
Создаем самоподписанный сертификат с использованием CSR:
$ cfssl selfsign www.linux-notes.net ca-csr.json | cfssljson -bare selfsigned
Генерируем self-signed root CA сертификат и приватный ключ:
$ cfssl genkey -initca csr.json | cfssljson -bare ca
Генерируем remote-issued сертификат и приватный ключ:
$ cfssl gencert -remote=remote_server [-hostname=comma,separated,hostnames] csr.json
Генерируем local-issued сертификат и приватный ключ:
$ cfssl gencert -ca cert -ca-key key [-hostname=comma,separated,hostnames] csr.json
Данная команда сгенерирует и выдаст сертификат и закрытый ключ из локального CA с помощью JSON. Вы можете использовать -hostname для переопределения SAN сертификатов.
Обновление OCSP файл ответов с новым сертификатом:
$ cfssl ocspsign -ca cert -responder key -responder-key key -cert cert \ | cfssljson -bare -stdout >> responses
Это вызовет ответ OCSP для сертификата и добавит его в файл ответов. Затем вы можете передать ответы на ocspserve для запуска OCSP-сервера.
Запускаем CFSSL API сервер. В CFSSL имеется поддержка HTTP-сервера с API; Все необходимые материалы можно найти в doc/api/intro.txt документе. Сервер запускается с помощью команды:
$ cfssl serve [-address address] [-ca cert] [-ca-bundle bundle] \ [-ca-key key] [-int-bundle bundle] [-int-dir dir] [-port port] \ [-metadata file] [-remote remote_host] [-config config] \ [-responder cert] [-responder-key key] [-db-config db-config]
Пример:
$ cfssl serve -address=localhost -port=8888 -ca-key=ca-key.pem -ca=ca-cert.pem
Вывод логов можно контролировать с помощью «-loglevel» опции:
$ cfssl serve -loglevel 0
Где levels это:
- 0 — DEBUG
- 1 — INFO (По умолчанию)
- 2 — WARNING
- 3 — ERROR
- 4 — CRITICAL
Для помощи можно использовать:
$ cfssl -h Usage: Available commands: genkey gencrl ocspsign info certinfo sign version crl selfsign scan revoke serve gencert ocsprefresh ocspserve print-defaults bundle gencsr ocspdump Top-level flags: -allow_verification_with_non_compliant_keys Allow a SignatureVerifier to use keys which are technically non-compliant with RFC6962.
Вот и все, статья «Установка cfssl в Unix/Linux» завершена.