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

Lemur Certificate Managerのユーザー、証明書、およびCSRの署名の作成

Lemur証明書マネージャーのインストールが成功した後、CFSSLルート証明機関(CA)が統合されました。統合手順の後、ローカルCAはキツネザルのCFSSLプラグインを使用して作成されました。したがって、この場合、CFSSLがルートCAです。 Lemur証明書マネージャーはPythonベースであることがわかっているので、この記事では、プロジェクトのさらなる開発に役立つさまざまなPythonスクリプトを作成することに焦点を当てています。この記事では、ターミナルを使用してLemurと対話するために、次のスクリプトを実行します。

  • LemurGUIでCFSSLを使用した権限の作成。このCFSSL権限は、証明書を生成するためのスクリプトで使用されます。 GUIでCFSSL権限のタイトル「myCA」を設定しました。このタイトル「myCA」は、キツネザルからの証明書の生成に使用されます。

CFSSLプラグインの使用

作成後にリストに表示される「myCA」。

  • Pythonスクリプトを使用して、Lemur APIを使用して「管理者」ロールを持つユーザーを作成すると、リクエストがJSON形式で送信されます。 (Lemur GUIのユーザーページから結果を確認します)。
  • 指定された所有者とユーザーの証明書の作成(キツネザルGUIの証明書ページから結果を確認します)。
  • 端末でOpensslを使用した秘密鍵/公開鍵の生成(鍵ペアを生成してからCSRを生成するコマンドを以下に示します)および
  • 次に、スクリプトでCSR(cat csrファイル)を使用して、定義されたカスタム機関から証明書を生成します。

注:

すべてのPythonスクリプトはJSON形式でリクエストをLemurプラットフォームに送信するため、要件に応じてスクリプトのパラメータを変更してください。 (CFSSL権限の名前、ユーザー名など)

スクリプト

次のスクリプトでは、jsonリクエストが192.168.1.7(LemurおよびCFSSLルートCAのIPアドレス)に送信されます。認証が成功すると、新しいユーザーを作成するための別のリクエストが送信されます。

1. create_user_using_admin_role.py

#!/usr/bin/python
import json import requests
login = requests.request("POST","http://192.168.1.7/api/1/auth/login",data=json.dumps({'username': "lemur", 'password': "lemur"}),headers={'content-type': 'application/json'}) print login.json() Auth = {'Authorization': 'token %s' %login.json()["token"], 'content-type': 'application/json'}
test = requests.request("POST","http://192.168.1.7/api/1/users",data=json.dumps({'username': "aa", 'aaa': "aaa" ,"email":"[email protected]","active": "true", "roles": [{'id':1}or{'name': 'myRole'}]}),headers=Auth)
print test.json()
--------------------------------------------------------------------------------------------------

次のスクリプトでは、ユーザー「aa」の新しい証明書を生成するための要求が「myCA」機関に送信されます。

2. create_certifacte_by_lemur.py

#!/usr/bin/python
import json
import requests
##username/password to login lemur to perform the desired action
login = requests.request("POST","http://192.168.1.7/api/1/auth/login",data=json.dumps({'username': "lemur", 'password': "lemur"}),headers={'content-type': 'application/json'})
print login.json() Auth = {'Authorization': 'token %s' %login.json()["token"], 'content-type': 'application/json'} cert_req = requests.request("POST","http://192.168.1.7/api/1/certificates",data=json.dumps({"owner": "[email protected]","commonName": "aa.example.net","country": "AU","replacements": [{"id": 1 }],"notify": "true","validityEnd": "2026-01-01T08:00:00.000Z", "authority": {"name": "myCA" }, "organization": "test.", "location": "Los Gataaos", "state": "Caldifornia", "user": { "username": "aa","active": "true","email": "[email protected]"}, "roles": [{"id": 1, "description": "admin role", "name": "[email protected]"}],"validityStart": "2018-11-11T04:19:48.000Z","organizationalUnit": "Operations"}),headers=Auth)
print cert_req.json() --------------------------------------------------------------------------------------------------

次のスクリプトの目的は、CFSSL認証局からCSRに署名することです。スクリプトのcsrを生成するために、OpenSSLの必要なコマンドを上記に示します。

次のコマンドを使用して、カスタムCSRに署名します。この機能は、ローカルにセットアップされたCAを使用してCSRに署名するためのLemurGUIでは提供されていません。

キーペア生成コマンド:

openssl genrsa -out test.key 2048

上記で生成されたtest.keyを使用したCSRの作成:

openssl req -new -sha256 -key test.key -out test.csr

次に、「cat」コマンドを使用してtest.csrのコンテンツを表示し、スクリプトにコピーして、ユーザーが生成したCSRの証明書を生成します。スクリプトでのCSRの使用に関する重要なヒントは、CSRの開始タグと停止タグの間を除いて/rを削除して/nを使用することです。

3. create_certificate_using_local_csr.py

#!/usr/bin/python
import json
import requests
##change username/password here
login = requests.request("POST","http://192.168.1.7/api/1/auth/login",data=json.dumps({'username': "lemur", 'password': "lemur"}),headers={'content-type': 'application/json'})
print login.json()
Auth = {'Authorization': 'token %s' %login.json()["token"], 'content-type': 'application/json'}
#it is working
csr_req = requests.request("POST","http://192.168.1.7/api/1/certificates",data=json.dumps({"owner": "[email protected]","commonName": "aa.eaaxample.net","authority": {"name": "myCA" },"csr":"-----BEGIN CERTIFICATE REQUEST-----
\nMIICxzCCAa8CAQAwgYExCzAJBgNVBAYTAkFVMQ0wCwYDVQQIDARQQUtJMRIwEAYD\nVQQHDAlJU0xBTUFCQUQxDTALBgNVBAoMBElJSUkxDDAKBgNVBAsMA0dHRzEQMA4G\nA1UEAwwHdXNlcjEyMzEgMB4GCSqGSIb3DQEJARYRdXNlcjEyM0BnbWFpbC5jb20w\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDzzV4H1epwXODPs9AkioTv\nQLRtea12vCbZJhKkH59hWhDMjqNRkh8qc4R9gk83lingdWK+L35OkGNi6DG9zseh\ncVRf68sNpTeFg+eXGRmEdTallBqPd5NS3JlMmXxbLEWrELiw4gPp3JpNAzoYZUxb\n4Uk4ho9EN8Fd1/lGmubvyvkYJ1mbpsK1LfaFohGYu+7nMvU4tn1Av/zyTGcIikVu\nU4UA23jKAMzjlSKdTJH/nmqvMi2wltRtb7DNpI/5HAancrnyEzeXC5IN+sPV/5oh\nxdxCyAkp1kDrWhC2yvoffzipoqEFESWmfFrJ8riTiQZqOIWqW+ZasZtu4GDqm4CL\nAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAH/PKs5kTmMPRW2Icy4Yj7vdzjpaA\n/r1glm0voMR5ytPo0+lXHDTQwt/1ObQvr8FnT2z8iqRvfXiv6WWruLzwEEVWsCFL\ny7RAa+K0wqP23CfxzCy/S4ZwCcR+wQb3UnWui8eMxgU1IBjupCR9kPFhL//aA+lm\njBi5YruBgX7MdlW+AlkuVDljzXm1orFYZFzS7OlybH5jh/B3Z2ygbC++Y24XI3qm\n5IYpsxFbOmrj7y3IXN/990305blCcKhpaG+FMTKhNqkXMYKYsZseIO3xdO4Ufjl/\nqS2jjsE1sFxmKbabhguhTT06oGimT+TbgoYVkc0DWhIdLcrOdxhGsFwdqg==\n-----END CERTIFICATE REQUEST-----"}),headers=Auth)
print csr_req.json()
--------------------------------------------------------------------------------------------------
結論

この記事では、Lemur証明書マネージャープロジェクトと対話するためにさまざまなPythonスクリプトを作成します。これらのスクリプトは、開発者がCLIからスクリプトを使用するのに役立ちます。


Linux
  1. Linuxで証明書署名要求(CSR)を生成する方法

  2. ユーザーアカウントとサービスアカウントの違いは?

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

  1. 「thesql」ユーザーとグループの作成、所有権の設定?

  2. SSL証明書のcPanelでキーとCSRを生成する方法

  3. Synaptic Package Manager の削除のマークと完全な削除のマークの違いは何ですか?

  1. Nix –LinuxおよびUnix用の強力なパッケージマネージャー

  2. rmdir(1) と rm(1) が共存する理由は何ですか?

  3. 特定のプロセスで実行されるユーザー、pid、およびコマンドのみを取得するにはどうすればよいですか? (Ubuntu 11.10)