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については、次の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)です。
- KEY –キーの特性を定義します:
次に、次のコマンドを実行して、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を作成するには、構成ファイル「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プラグインを使用して証明書を生成することです。