GNU/Linux >> Linux の 問題 >  >> Linux

CFSSLとLemur証明書マネージャーの統合

Lemur証明書マネージャーに関する以前の記事では、クライアント証明書にサードパーティのルート証明機関(CA)を使用していません。したがって、このチュートリアルでは、PKIはCFSSL(CloudflareのSSL)を使用してセットアップされ、Lemurプロジェクトと統合されます。現在、ユーザーがCFSSLをLemurセットアップと統合するのに役立つドキュメントはありません。

注:CFSSLをサードパーティのルート機関として使用しているため、最初に別のマシンでセットアップする必要があります(ただし、同じLemurボックスでセットアップします)。その後、lemurconfファイルを変更してCFSSLを使用します。証明書に署名します。

CFSSLのインストール

CloudFlare SSLは「Go」プログラミング言語を使用して実装されているため、マシンに「go」パッケージをインストールする必要があります。次のコマンドは、必要なパッケージをマシンにインストールします。

1。 Goをインストールする

Goパッケージはソースコードからインストールされます。

wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz 

ダウンロードしたアーカイブを解凍し、システムの目的の場所にインストールします。 / usr/localディレクトリにインストールしています。これをシステムの目的の場所に配置することもできます。

tar -xzvf go1.10.1.linux-amd64.tar.gz
mv go /usr/local

Goパッケージのインストール後、Goバイナリの環境変数も設定する必要があります。 (ユーザープロファイルに追加できるので、永続的な設定にします)。通常、3つの環境変数を GOROOTとして設定する必要があります 、 GOPATH およびパス

GOROOT Goパッケージがシステムにインストールされている場所です。

export GOROOT=/usr/local/go

GOPATH は作業ディレクトリの場所です。

export GOPATH=$HOME/go

次に、パスを設定します アクセスする変数は、システム全体でバイナリになります。

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

2。テスト実行コマンド

次に、ターミナルで「go」コマンドを入力します。次のスクリーンショットのような出力が表示されます。

go

3。 CFSSLをインストールする

このUbuntuプラットフォームにCFSSLをインストールする必要があります。 GOに必要な環境変数が適切に設定されていれば、CFSSLのインストールプロセスは簡単になります。

a。次のコマンドは、CFSSLユーティリティをダウンロードし、$ GOPATH /bin/パスにビルドします。

go get -u github.com/cloudflare/cfssl/cmd/cfssl

b。次のコマンドは、CFSSLパッケージのjsonプラグインをインストールします。CFSSLはJSONリクエストを処理するため、これが必要です。

 go get -u github.com/cloudflare/cfssl/cmd/cfssljson

c。以下のコマンドを使用して、CFSSLのすべてのプログラムをインストールするだけです。このコマンドは、すべてのユーティリティプログラム(cfssl、cfssljson、mkbundleなど)を$ GOPATH / bin /ディレクトリにダウンロード、ビルド、およびインストールします。

go get -u github.com/cloudflare/cfssl/cmd/...

以下に示すように、ターミナルで「cfssl」コマンドを実行すると、CFSSLPKIでサポートされているすべての操作が表示されます。

CFSSLのPKIセットアップ

これで、cfsslアプリケーションを使用してLemurプロジェクトのPKIをセットアップします。 CFSSLのセットアップでは、構成ファイル「CSR_configuration」と「signing_configuration」が重要です。 「CSR」構成ファイルには、作成しようとしているキーペアの構成が含まれており、「署名」構成には、名前のとおり、構成ルールが設定されています。

ルートCAを作成

ルートCAについては、次のCSR構成ファイル(csr_ROOT_CA.jsonと呼びます)を確認してください。

  • csr_ROOT_CA.json
 {
 "CN": "MY-ROOT-CA",
 "key": {
    "algo": "ecdsa",
    "size": 256
 },
 "names": [
 {
    "C": "UK",
    "L": "London",
    "O": "My Organisation",
    "OU": "My Organisational Unit Inside My Organisation"
 }
 ],
 "ca": {
    "expiry": "262800h"
 }
}

さまざまなフィールドの簡単な説明を以下に示します。

  • 構成ファイルはX.509命名スキームに従っているため、次のフィールドが必要です。
    • CN(共通名)–エンティティの名前。ルートCAの場合、これはルートCA名です。
    • C(国)
    • L(場所)
    • O(組織)
    • OU(組織単位)
  • 現在、いくつかの特定のフィールドがCFSSLに固有です:
    • KEY –キーの特性を定義します:
      • Algo –アルゴリズムを指定します。 RSAまたはECDSAアルゴリズムの場合、それぞれ「rsa」または「ecdsa」にすることができます。現在、レガシーデバイスが関係しない場合は、ECDSAが常に推奨されますが、これは2〜3年未満のデバイスにのみ適用されます。それ以外の場合はRSAを使用する必要があります。
      • size –キーサイズを指定します。 256はecdsaキーに使用されます。 RSAキーの場合、2048または4096が推奨値です。
    • ca – CAの特性を定義します。この場合、キーの有効性を時間単位で定義します。はい、時間単位で定義します。この場合、ルート権限はルートキーのセキュリティを予測している限り存続するため、30年(24x356x30)です。

次に、次のコマンドを実行して、LemurのルートCAを実際に作成します。

cfssl gencert -initca csr_ROOT_CA.json | cfssljson -bare root_ca

上記のコマンドは、マシン上に次のファイルを作成します。

  • root_ca.csr –ルートCA証明書署名要求。これは、ルートCAには意味がないため、使用されることはありません。ルートCAは自己署名されているため。
  • root_ca.pem –ルートCA証明書。これはあなたが作成し、可能な限り配布するファイルです。
  • root_ca.key –これはルートCAキーです。あなたの人生がそれに依存しているかのように、このファイルを安全に保管してください。パブリックルートCAの場合、これは実際には真実です。

ルートCAは自己署名されているため、中間CAを生成するための次のステップに進みます。

中級CA

中間CAの生成は必須ではありませんが、ベストプラクティスに対応しています。中間CAを持つことの最終目標は、セキュリティの観点から中間ステップを持つことです。いつもの。ルートCAキーはオフラインのマシンに保持され、中間CA証明書に署名する必要がある場合にのみ使用されます。

中間CAを作成するには、構成ファイル「csr_INTERMEDIATE_CA.json」が必要です。

  • csr_INTERMEDIATE_CA.json –中間CAの証明書署名要求
{
 "CN": "My-Intermediate-CA",
 "key": {
    "algo": "ecdsa",
    "size": 256
 },
 "names": [
 {
    "C": "UK",
    "L": "London",
    "O": "My Organisation",
    "OU": "My Organisational Unit Inside My Organisation"
 }
 ],
 "ca": {
    "expiry": "42720h"
 }
}

「root_to_intermediate_ca.json」ファイルには、ルートCA署名構成が含まれています。

{ 
"signing": { "default": { "usages": ["digital signature","cert sign","crl sign","signing"], "expiry": "262800h", "ca_constraint": {"is_ca": true, "max_path_len":0, "max_path_len_zero": true} } } }

このファイルには、証明書に最も関連するパラメータが含まれています。

  • 使用法–署名されている証明書によって実行が許可されている使用法。 CFSSLでサポートされているオプションは次のとおりです。
    • 「デジタル署名」、
    • 「証明書の署名」、
    • 「crlsign」、
    • 「署名」
    • etc
  • is_ca –このフィールドは、中間CA証明書を生成する場合にのみ適用可能であり、生成された証明書が他の証明書に署名できるようにします。このフィールドをエンドデバイス証明書に残すと、ほとんどの一般的なブラウザとオペレーティングシステムによって拒否されます。

次のコマンドは、上記の構成に対して中間CAを作成します。

cfssl gencert -initca csr_INTERMEDIATE_CA.json | cfssljson -bare intermediate_ca

上記のコマンドは、中間CAの次のファイルを作成します。

  • intermediate_ca.csr –中間CA証明書署名要求。
  • intermediate_ca.pem –中間CA証明書であり、誰も署名していないため、役に立たない。
  • intermediate_ca.key –これは中間CAキーです。このファイルを安全に保管してください。

次のコマンドは、ルートCAによる中間CA証明書の署名を示しています。

cfssl sign -ca root_ca.pem -ca-key root_ca-key.pem -config root_to_intermediate_ca.json intermediate_ca.csr | cfssljson -bare intermediate_ca

上記のコマンドは、intermediate_ca.pemファイルに署名します。これで、ルートCAと中間CAの設定が完了しました。ルートCAキーと構成ファイルを安全に保つことが重要です。次のステップは、クライアントデバイスまたは顧客の証明書を作成することです。ここでは、CFSSLセットアップをLemurプロジェクトと統合し、クライアントの証明書を生成します。

CFSSLのPKIを実行する

CFSSLベースのPKIを実行するには、certsディレクトリ内に移動し、次のコマンドを実行します。

cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888

上記のコマンドの出力は次のようになります。

[email protected]:/home/john/Desktop/certs# cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888
2018/05/20 16:35:18 [INFO] Initializing signer
2018/05/20 16:35:19 [WARNING] couldn't initialize ocsp signer: open : no such file or directory
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/scaninfo' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'ocspsign' is disabled: signer not initialized
2018/05/20 16:35:19 [INFO] endpoint '/' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/info' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/gencrl' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/scan' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'crl' is disabled: cert db not configured (missing -db-config)
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/certinfo' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'revoke' is disabled: cert db not configured (missing -db-config)
2018/05/20 16:35:19 [INFO] bundler API ready
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/bundle' is enabled
2018/05/20 16:35:19 [INFO] setting up key / CSR generator
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/newkey' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/init_ca' is enabled
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/sign' is enabled
2018/05/20 16:35:19 [WARNING] endpoint 'authsign' is disabled: {"code":5200,"message":"Invalid or unknown policy"}
2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/newcert' is enabled
2018/05/20 16:35:19 [INFO] Handler set up complete.
2018/05/20 16:35:19 [INFO] Now listening on 192.168.10.151:8888

マシンのIPアドレスは192.168.10.151です。 ポートは8888 。ファイアウォールのこのポートがCFSSLを使用できるようにします。

注:次のコマンドは、cfsslユーティリティの使用方法を示しています。

{ 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の構成が完了し、マシン上で実行されています。次のステップは、CFSSLとLemurの統合です。

CFSSLのPKIのLemur構成

これで、Lemurの構成ファイル「lemur.conf.py」が変更されます(URL、ROOT、中間キーなど)。構成ファイルには、CFSSLに関する情報が含まれます。キツネザル設定ファイルのパスは「/home/lemur/.lemur/lemur.conf.py」です。

CFSSL_URL ="http://192.168.10.151:8888"
CFSSL_ROOT ="""-----BEGIN CERTIFICATE-----
MIICcjCCAhegAwIBAgIUahfYPc4RpK92G1ZHhu3q9URvf+8wCgYIKoZIzj0EAwIw
9UmEM4IEd2j8/w4WdTYaBE5EzwIhAN3oW9iAmjcyzC/7BPIY/Sr+twig/+XwnQ8T
hKXP2OHd
-----END CERTIFICATE-----"""
CFSSL_INTERMEDIATE ="""-----BEGIN CERTIFICATE-----
MIICfDCCAiKgAwIBAgIUEeb8Duel8wySG61vCM2UEUD15XQwCgYIKoZIzj0EAwIw
qM9lE82tku/b6SMxAlBByQ==
-----END CERTIFICATE-----"""

次に、「lemur start」コマンドを実行して、CFSSL設定でlemur.conf.pyを使用します。

CFSSLを使用して証明書を作成する

Lemurに関する以前の記事に従って、ダッシュボードにアクセスし、CFSSLのルートCAを使用してクライアント証明書を作成します。まず、新しい証明機関を作成し、ルートCAとしてプラグインCFSSLを選択します。

1.新しい権限のさまざまなパラメータを設定します。

2。新しくセットアップしたCFSSLプラグインをルートCAとして選択します。

Lemurで新しい認証局を設定したら、次のステップは、新しく設定したCFSSLプラグインを使用して証明書を生成することです。


Linux
  1. i3Linuxウィンドウマネージャーのショートカットを学ぶ

  2. CaルートキーでCsrに署名できませんでしたか?

  3. Wcで各行の文字を数えますか?

  1. Linuxカーネルをftraceで分析する

  2. Pleskファイルマネージャの使用を開始する

  3. Nautilus Terminal 3 で Nautilus ファイル マネージャーに組み込まれた端末を取得する

  1. rootアカウントでのログインを無効にする

  2. Duコマンドで–excludeを使用しますか?

  3. LetsEncryptCertbotユーティリティをCentOS7withApacheにインストールして使用します