Установка cfssl в Unix/Linux

Установка 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» завершена.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.