Trong bài viết trước về trình quản lý chứng chỉ Lemur, chúng tôi không sử dụng bất kỳ Cơ quan chứng nhận gốc (CA) của bên thứ ba nào cho chứng chỉ máy khách. Do đó, trong hướng dẫn này, PKI sẽ được thiết lập bằng CFSSL (SSL của Cloudflare) và tích hợp với dự án Lemur. Hiện tại, không có tài liệu nào giúp người dùng tích hợp CFSSL với thiết lập Lemur.
Lưu ý: Vì chúng tôi đang sử dụng CFSSL làm cơ quan chứng nhận gốc của bên thứ ba, nên trước tiên chúng tôi phải thiết lập nó trên một máy riêng (tuy nhiên chúng tôi thiết lập nó trên cùng một hộp Lemur) và sau đó thay đổi tệp cấu hình Lemur để sử dụng CFSSL để ký chứng chỉ.
Giải nén tệp đã tải xuống và cài đặt vào vị trí mong muốn trên hệ thống. Chúng tôi đang cài đặt tệp này trong thư mục /usr/local. Bạn cũng có thể đặt lệnh này vào vị trí mong muốn trên hệ thống.
Sau khi cài đặt gói Go, bạn cũng cần thiết lập biến môi trường cho tệp nhị phân Go. (Bạn có thể thêm nó vào hồ sơ người dùng để thiết lập vĩnh viễn).Thông thường, bạn cần đặt 3 biến môi trường làGOROOT,GOPATHvàPATH.
GOROOTlà vị trí cài đặt gói Go trên hệ thống của bạn.
GOPATHlà vị trí thư mục làm việc của bạn.
Bây giờ, hãy đặt biếnPATHđể truy cập hệ thống nhị phân go trên toàn bộ hệ thống.
a. Lệnh sau sẽ tải xuống tiện ích CFSSL và xây dựng nó trong đường dẫn $GOPATH/bin/.
b. Lệnh sau sẽ cài đặt plugin json của gói CFSSL. Lệnh này là bắt buộc vì CFSSL xử lý các yêu cầu JSON.
c. chỉ cần cài đặt tất cả các chương trình của CFSSL bằng lệnh bên dưới. Lệnh này sẽ tải xuống, xây dựng và cài đặt tất cả các chương trình tiện ích (bao gồm cfssl, cfssljson và mkbundle cùng nhiều chương trình khác) vào thư mục $GOPATH/bin/.
Dưới đây là giải thích ngắn gọn về các trường khác nhau.
Bây giờ, hãy chạy lệnh sau để thực sự tạo Root CA cho Lemur.
Lệnh trên sẽ tạo các tệp sau trên máy.
Tệp cấu hình "csr_INTERMEDIATE_CA.json" là bắt buộc để tạo CA trung gian.
Tệp "root_to_intermediate_ca.json" chứa cấu hình ký Root CA.
Tệp này chứa các tham số có liên quan nhất cho một chứng chỉ.
Lệnh sau sẽ tạo CA trung gian theo cấu hình đã đề cập ở trên.
Lệnh trên sẽ tạo các tệp sau của CA trung gian.
Lệnh trên sẽ ký tệp intermediate_ca.pem. Bây giờ quá trình thiết lập Root CA và Intermediate CA đã hoàn tất. Điều quan trọng là phải giữ cho Root CA Keys và các tệp cấu hình an toàn và bảo mật. Bước tiếp theo là tạo chứng chỉ cho thiết bị khách hàng hoặc khách hàng. Tại đây, chúng tôi sẽ tích hợp thiết lập CFSSL với dự án Lemur và chứng chỉ của máy khách sẽ được tạo.
Đầu ra của lệnh trên sẽ như sau.
Địa chỉ IP của máy là 192.168.10.151 và cổng là 8888. Cho phép cổng này trong tường lửa sử dụng CFSSL.
LƯU Ý: Lệnh sau chỉ hướng dẫn sử dụng tiện ích cfssl.
Bây giờ, cấu hình CFSSL đã hoàn tất và đang chạy trên máy. Bước tiếp theo là tích hợp CFSSL với Lemur.
Bây giờ, hãy chạy lệnh "lemur start" để sử dụng lemur.conf.py với cài đặt CFSSL.
1. thiết lập các tham số khác nhau của cơ quan mới.
2. chọn Plugin CFSSL mới thiết lập làm Root CA.
Sau khi thiết lập Cơ quan cấp chứng chỉ mới trong Lemur, bước tiếp theo là tạo chứng chỉ bằng plugin CFSSL mới thiết lập.
Lưu ý: Vì chúng tôi đang sử dụng CFSSL làm cơ quan chứng nhận gốc của bên thứ ba, nên trước tiên chúng tôi phải thiết lập nó trên một máy riêng (tuy nhiên chúng tôi thiết lập nó trên cùng một hộp Lemur) và sau đó thay đổi tệp cấu hình Lemur để sử dụng CFSSL để ký chứng chỉ.
Cài đặt CFSSL
CloudFlare SSL được triển khai bằng ngôn ngữ lập trình "Go" nên cần cài đặt gói "go" trên máy. Lệnh sau sẽ cài đặt gói cần thiết trên máy.1. Cài đặt Go
Gói Go sẽ được cài đặt từ mã nguồn.
Mã:
wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz
Giải nén tệp đã tải xuống và cài đặt vào vị trí mong muốn trên hệ thống. Chúng tôi đang cài đặt tệp này trong thư mục /usr/local. Bạn cũng có thể đặt lệnh này vào vị trí mong muốn trên hệ thống.
Mã:
tar -xzvf go1.10.1.linux-amd64.tar.gz
Mã:
mv go /usr/local
Sau khi cài đặt gói Go, bạn cũng cần thiết lập biến môi trường cho tệp nhị phân Go. (Bạn có thể thêm nó vào hồ sơ người dùng để thiết lập vĩnh viễn).Thông thường, bạn cần đặt 3 biến môi trường làGOROOT,GOPATHvàPATH.
GOROOTlà vị trí cài đặt gói Go trên hệ thống của bạn.
Mã:
export GOROOT=/usr/local/go
Mã:
export GOPATH=$HOME/go
Mã:
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
2. Kiểm tra lệnh Go
Bây giờ hãy nhập lệnh "go" vào terminal. Nó sẽ hiển thị đầu ra như ảnh chụp màn hình sau.
Mã:
go
3. Cài đặt CFSSL
Chúng ta phải cài đặt CFSSL trên nền tảng Ubuntu này. Khi các biến môi trường cần thiết cho GO được thiết lập đúng cách, thì quá trình cài đặt CFSSL sẽ dễ dàng.a. Lệnh sau sẽ tải xuống tiện ích CFSSL và xây dựng nó trong đường dẫn $GOPATH/bin/.
Mã:
go get -u github.com/cloudflare/cfssl/cmd/cfssl
Mã:
go get -u github.com/cloudflare/cfssl/cmd/cfssljson
Mã:
go get -u github.com/cloudflare/cfssl/cmd/...
Như được hiển thị bên dưới, hãy chạy lệnh "cfssl" trong thiết bị đầu cuối và nó sẽ hiển thị tất cả các hoạt động được hỗ trợ bởi CFSSL PKI.Cài đặt PKI của CFSSL
Bây giờ, ứng dụng cfssl sẽ được sử dụng để cài đặt PKI cho dự án Lemur. Các tệp cấu hình "CSR_configuration" và "signing_configuration" rất quan trọng trong quá trình cài đặt CFSSL. Tệp cấu hình "CSR" chứa cấu hình cho cặp khóa mà bạn sắp tạo và cấu hình "Ký" như tên gọi, thiết lập các quy tắc cấu hình.Tạo CA ROOT
Đối với CA gốc, hãy kiểm tra tệp cấu hình CSR sau (chúng ta sẽ gọi là csr_ROOT_CA.json):- csr_ROOT_CA.json
Mã:
{ "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" }}
Dưới đây là giải thích ngắn gọn về các trường khác nhau.
- Tệp cấu hình tuân theo sơ đồ đặt tên X.509, do đó các trường sau là bắt buộc:CN (Tên chung) – Tên của thực thể. Trong trường hợp Root CA, đó là Tên Root CA;
- C (Quốc gia)
- L (Vị trí)
- O (Tổ chức)
- OU (Đơn vị tổ chức)
- KEY – Xác định các đặc điểm của khóa:Algo – Chỉ định thuật toán. Có thể là 'rsa' hoặc 'ecdsa', tương ứng với thuật toán RSA hoặc ECDSA. Bây giờ, ECDSA luôn được khuyến nghị nếu các thiết bị cũ không liên quan, nhưng điều này chỉ áp dụng cho các thiết bị có tuổi đời dưới hai hoặc ba năm. Nếu không, sẽ sử dụng RSA.
- size – Chỉ định kích thước khóa. 256 sẽ được sử dụng cho khóa ecdsa. Đối với khóa RSA, 2048 hoặc 4096 là các giá trị được khuyến nghị.
Bây giờ, hãy chạy lệnh sau để thực sự tạo Root CA cho Lemur.
Mã:
cfssl gencert -initca csr_ROOT_CA.json | cfssljson -bare root_ca
Lệnh trên sẽ tạo các tệp sau trên máy.
- root_ca.csr – Yêu cầu ký chứng chỉ root ca, không có ý nghĩa đối với root ca và do đó sẽ không bao giờ được sử dụng. Vì CA gốc tự ký.
- root_ca.pem – Chứng chỉ CA gốc. Đây là tệp bạn và phân phối càng nhiều càng tốt.
- root_ca.key – Đây là Khóa CA gốc. Giữ tệp này an toàn và bảo mật, như thể mạng sống của bạn phụ thuộc vào nó. Đối với CA gốc công khai thì đây thực sự là sự thật.
CA trung gian
Việc tạo CA trung gian không bắt buộc nhưng tương ứng với thông lệ tốt nhất. Mục tiêu cuối cùng của việc có CA trung gian là có bước trung gian về mặt bảo mật. Thông thường. Khóa CA gốc được lưu trong máy ngoại tuyến và chỉ được sử dụng khi bạn cần ký chứng chỉ CA trung gian.Tệp cấu hình "csr_INTERMEDIATE_CA.json" là bắt buộc để tạo CA trung gian.
- csr_INTERMEDIATE_CA.json– Yêu cầu ký chứng chỉ cho CA trung gian
Mã:
{ "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" }}
Tệp "root_to_intermediate_ca.json" chứa cấu hình ký Root CA.
Mã:
{
"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} } }}
Tệp này chứa các tham số có liên quan nhất cho một chứng chỉ.
- usages – Những cách sử dụng nào được phép thực hiện bởi chứng chỉ đang được ký. Các tùy chọn được CFSSL hỗ trợ như sau:“chữ ký số”,
- “dấu hiệu chứng nhận”,
- “dấu hiệu crl”,
- “ký”
- v.v.
Lệnh sau sẽ tạo CA trung gian theo cấu hình đã đề cập ở trên.
Mã:
cfssl gencert -initca csr_INTERMEDIATE_CA.json | cfssljson -bare intermediate_ca
Lệnh trên sẽ tạo các tệp sau của CA trung gian.
- intermediate_ca.csr – Yêu cầu ký chứng chỉ CA trung gian.
- intermediate_ca.pem – Chứng chỉ CA trung gian, không được bất kỳ ai ký và do đó vô dụng.
- intermediate_ca.key – Đây là Khóa CA trung gian. Hãy giữ tệp này an toàn và bảo mật.
Mã:
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
Lệnh trên sẽ ký tệp intermediate_ca.pem. Bây giờ quá trình thiết lập Root CA và Intermediate CA đã hoàn tất. Điều quan trọng là phải giữ cho Root CA Keys và các tệp cấu hình an toàn và bảo mật. Bước tiếp theo là tạo chứng chỉ cho thiết bị khách hàng hoặc khách hàng. Tại đây, chúng tôi sẽ tích hợp thiết lập CFSSL với dự án Lemur và chứng chỉ của máy khách sẽ được tạo.
Chạy PKI của CFSSL
Để chạy PKI dựa trên CFSSL, hãy vào thư mục certs và chạy lệnh sau.
Mã:
cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888
Mã:
root@test-vm:/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] Đang khởi tạo người ký
2018/05/20 16:35:19 [INFO] không thể khởi tạo người ký ocsp: mở: không có tệp hoặc thư mục nào như vậy
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/scaninfo' được bật
2018/05/20 16:35:19 [INFO] điểm cuối 'ocspsign' bị tắt: người ký chưa được khởi tạo
2018/05/20 16:35:19 [INFO] điểm cuối '/' được bật
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/info' được bật
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/gencrl' được bật
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/scan' được bật
2018/05/20 16:35:19 [INFO] điểm cuối 'crl' bị vô hiệu hóa: cert db chưa được cấu hình (thiếu -db-config)
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/certinfo' được bật
2018/05/20 16:35:19 [INFO] điểm cuối 'revoke' bị vô hiệu hóa: cert db chưa được cấu hình (thiếu -db-config)
2018/05/20 16:35:19 [INFO] API của trình đóng gói đã sẵn sàng
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/bundle' đã được bật
2018/05/20 16:35:19 [INFO] thiết lập trình tạo khóa / CSR
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/newkey' đã được bật
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/init_ca' đã được bật
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/sign' đã được bật
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/sign' đã được bật
2018/05/20 16:35:19 [WARNING] điểm cuối 'authsign' đã bị vô hiệu hóa: {"code":5200,"message":"Chính sách không hợp lệ hoặc không xác định"}
2018/05/20 16:35:19 [INFO] điểm cuối '/api/v1/cfssl/newcert' đã được bật
2018/05/20 16:35:19 [INFO] Đã hoàn tất thiết lập trình xử lý.
2018/05/20 16:35:19 [INFO] Hiện đang lắng nghe trên 192.168.10.151:8888
Địa chỉ IP của máy là 192.168.10.151 và cổng là 8888. Cho phép cổng này trong tường lửa sử dụng CFSSL.
LƯU Ý: Lệnh sau chỉ hướng dẫn sử dụng tiện ích cfssl.
Mã:
{ 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] }
Cấu hình Lemur cho PKI của CFSSL
Bây giờ, tệp cấu hình "lemur.conf.py" của Lemur sẽ được sửa đổi (chẳng hạn như URL, ROOT và khóa trung gian). Tệp cấu hình sẽ bao gồm thông tin về CFSSL. Đường dẫn của tệp cấu hình lemur là "/home/lemur/.lemur/lemur.conf.py".
Mã:
CFSSL_URL ="http://192.168.10.151:8888"
Mã:
CFSSL_ROOT ="""-----BEGIN CERTIFICATE-----
MIICcjCCAhegAwIBAgIUahfYPc4RpK92G1ZHhu3q9URvf+8wCgYIKoZIzj0EAwIw
9UmEM4IEd2j8/w4WdTYaBE5EzwIhAN3oW9iAmjcyzC/7BPIY/Sr+twig/+XwnQ8T
hKXP2OHd
-----END CERTIFICATE-----"""
Mã:
CFSSL_INTERMEDIATE ="""--BEGIN CERTIFICATE---
MIICfDCCAiKgAwIBAgIUEeb8Duel8wySG61vCM2UEUD15XQwCgYIKoZIzj0EAwIw
qM9lE82tku/b6SMxAlBByQ==
-----END CERTIFICATE-----"""
Bây giờ, hãy chạy lệnh "lemur start" để sử dụng lemur.conf.py với cài đặt CFSSL.
Tạo chứng chỉ bằng CFSSL
Bằng cách làm theo bài viết trước của chúng tôi về Lemur, hãy truy cập bảng điều khiển để tạo Chứng chỉ máy khách bằng CA gốc của CFSSL. Trước hết, hãy tạo Cơ quan cấp chứng chỉ mới và chọn plugin CFSSL làm Root CA.1. thiết lập các tham số khác nhau của cơ quan mới.
2. chọn Plugin CFSSL mới thiết lập làm Root CA.
Sau khi thiết lập Cơ quan cấp chứng chỉ mới trong Lemur, bước tiếp theo là tạo chứng chỉ bằng plugin CFSSL mới thiết lập.