Sau khi cài đặt thành công trình quản lý chứng chỉ Lemur, CFSSL Root Certification Authority (CA) đã được tích hợp với nó. Sau bước tích hợp, CA cục bộ đã được tạo bằng plugin CFSSL trong lemur. Vì vậy, CFSSL là CA gốc trong trường hợp của chúng tôi. Như chúng ta đã biết, trình quản lý chứng chỉ Lemur dựa trên Python nên trong bài viết này, trọng tâm của chúng tôi là tạo các tập lệnh python khác nhau sẽ hữu ích cho quá trình phát triển tiếp theo của dự án. Trong bài viết này, chúng tôi sẽ thực hiện các tập lệnh sau để tương tác với Lemur bằng thiết bị đầu cuối.
Sử dụng plugin CFSSL
"myCA" được hiển thị trong danh sách sau khi tạo.
Tất cả các tập lệnh python sẽ gửi yêu cầu ở định dạng JSON đến nền tảng Lemur, vì vậy hãy thay đổi các tham số trong tập lệnh theo yêu cầu của bạn. (như tên thẩm quyền CFSSL, tên người dùng, v.v.)
1.create_user_using_admin_role.py
Trong tập lệnh sau, một yêu cầu được gửi đến cơ quan "myCA" để tạo chứng chỉ mới cho người dùng "aa".
2. create_certifacte_by_lemur.py
Mục đích của tập lệnh sau là ký CSR từ cơ quan cấp chứng chỉ CFSSL. Các lệnh cần thiết của OpenSSL được đưa ra ở trên để tạo csr cho tập lệnh.
Lệnh sau sẽ được sử dụng để ký CSR tùy chỉnh. Chức năng này không được cung cấp trong Lemur GUI để ký CSR bằng CA được thiết lập cục bộ của chúng tôi.
Lệnh tạo cặp khóa:
Tạo CSR bằng test.key được tạo ở trên:
Bây giờ sử dụng lệnh "cat" để xem nội dung của test.csr và sao chép nó vào tập lệnh để tạo chứng chỉ trên CSR do người dùng tạo. Gợi ý quan trọng về cách sử dụng CSR trong tập lệnh là xóa /r và sử dụng /n ngoại trừ giữa các thẻ bắt đầu/dừng của CSR.
3. create_certificate_using_local_csr.py
- Tạo Authority bằng CFSSL trong Lemur GUI. CFSSL Authority này sẽ được sử dụng trong các tập lệnh của chúng tôi để tạo chứng chỉ. Tôi đã đặt tiêu đề "myCA" của quyền CFSSL trong GUI. Tiêu đề "myCA" này sẽ được sử dụng trong quá trình tạo chứng chỉ từ Lemur.
Sử dụng plugin CFSSL
"myCA" được hiển thị trong danh sách sau khi tạo.
- Sử dụng tập lệnh Python để tạo người dùng có vai trò "Quản trị viên" bằng API Lemur và yêu cầu được gửi ở định dạng JSON. (xác minh kết quả từ trang người dùng của Lemur GUI).
- Tạo chứng chỉ cho chủ sở hữu và người dùng đã chỉ định (Xác minh kết quả từ trang chứng chỉ của lemur GUI).
- Tạo khóa riêng tư/công khai bằng Openssl trong thiết bị đầu cuối (các lệnh được đưa ra bên dưới để tạo cặp khóa và sau đó là CSR) và
- sau đó sử dụng CSR (cat tệp csr) trong tập lệnh để tạo chứng chỉ từ thẩm quyền tùy chỉnh đã xác định.
Tất cả các tập lệnh python sẽ gửi yêu cầu ở định dạng JSON đến nền tảng Lemur, vì vậy hãy thay đổi các tham số trong tập lệnh theo yêu cầu của bạn. (như tên thẩm quyền CFSSL, tên người dùng, v.v.)
Tập lệnh
Trong tập lệnh sau, yêu cầu json sẽ được gửi đến 192.168.1.7 (địa chỉ IP của Lemur và CA gốc CFSSL). Sau khi xác thực thành công, một yêu cầu khác sẽ được gửi để tạo người dùng mới.1.create_user_using_admin_role.py
Mã:
#!/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":"[emailprotected]","active": "true", "roles": [{'id':1}or{'name': 'myRole'}]}),headers=Auth)
print test.json()
--------------------------------------------------------------------------------------------------
2. create_certifacte_by_lemur.py
Mã:
#!/usr/bin/python
import json
import requests
##username/password để đăng nhập lemur để thực hiện hành động mong muốn
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 = yêu cầu.yêu cầu("POST","http://192.168.1.7/api/1/certificates",data=json.dumps({"owner": "[emailprotected]","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": "[emailprotected]"}, "roles": [{"id": 1, "description": "admin role", "name": "[emailprotected]"}],"validityStart": "2018-11-11T04:19:48.000Z","organizationalUnit": "Operations"}),headers=Auth)
print cert_req.json()--------------------------------------------------------------------------------------------------
Lệnh sau sẽ được sử dụng để ký CSR tùy chỉnh. Chức năng này không được cung cấp trong Lemur GUI để ký CSR bằng CA được thiết lập cục bộ của chúng tôi.
Lệnh tạo cặp khóa:
Mã:
openssl genrsa -out test.key 2048
Mã:
openssl req -new -sha256 -key test.key -out test.csr
3. create_certificate_using_local_csr.py
Mã:
#!/usr/bin/python
import json
import requests
##thay đổi tên người dùng/mật khẩu tại đây
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": "[emailprotected]","commonName": "aa.eaaxample.net","authority": {"name": "myCA" },"csr":"-----BẮT ĐẦU CHỨNG NHẬN YÊU CẦU-----
\nMIICxzCCAa8CAQAwgYExCzAJBgNVBAYTAkFVMQ0wCwYDVQQIDARQQUtJMRIwEAYD\nVQQHDAlJU0xBTUFCQUQxDTALBgNVBAoMBElJSUkxDDAKBgNVBAsMA0dHRzEQMA4G\nA1UEAwwHdXNlcjEyMzEgMB4GCSqGSIb3DQEJARYRdXNlcjEyM0BnbWFpbC5jb20w\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKA oIBAQDzzV4H1epwXODPs9AkioTv\nQLRtea12vCbZJhKkH59hWhDMjqNRkh8qc4R9gk83lingdWK+L35OkGNi6DG9zseh\ncVRf68sNpTeFg+eXGRmEdTallBqPd5NS3JlMmXxbLEWrELiw4gPp3JpNAzoYZUxb\n4Uk4ho9EN8Fd1/lGmubvyvkYJ1mbpsK1LfaFohGYu+7nMvU4tn1Av/zyTGcIikVu\nU4UA23jKAMzjlSKdTJH/nmqvMi 2wltRtb7DNpI/5HAancrnyEzeXC5IN+sPV/5oh\nxdxCyAkp1kDrWhC2yvoffzipoqEFESWmfFrJ8riTiQZqOIWqW+ZasZtu4GDqm4CL\nAgMBAAGgADANBgkqhkiG 9w0BAQsFAAOCAQEAH/PKs5kTmMPRW2Icy4Yj7vdzjpaA\n/r1glm0voMR5ytPo0+lXHDTQwt/1ObQvr8FnT2z8iqRvfXiv6WWruLzwEEVWsCFL\ny7RAa+K0wqP23Cf xzCy/S4ZwCcR+wQb3UnWui8eMxgU1IBjupCR9kPFhL//aA+lm\njBi5YruBgX7MdlW+AlkuVDljzXm1orFYZFzS7OlybH5jh/B3Z2ygbC++Y24XI3qm\n5IYpsxFbO mrj7y3IXN/990305blCcKhpaG+FMTKhNqkXMYKYsZseIO3xdO4Ufjl/\nqS2jjsE1sFxmKbabhguhTT06oGimT+TbgoYVkc0DWhIdLcrOdxhGsFwdqg==\n------END YÊU CẦU CHỨNG NHẬN-----"}),headers=Auth)
print csr_req.json()
--------------------------------------------------------------------------------------------------