Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
Tài liệu này mô tả cách tạo, sửa đổi và xoá kho khoá cũng như kho tin cậy cho Edge dành cho phiên bản Private Cloud 4.17.09 trở xuống.
Giới thiệu về kho khoá và kho tin cậy
Kho khoá và kho lưu trữ tin cậy xác định kho lưu trữ chứng chỉ bảo mật dùng cho TLS mã hoá. Điểm khác biệt chính giữa hai loại này là vị trí sử dụng trong quá trình bắt tay TLS:
- Kho khoá chứa chứng chỉ TLS và khoá riêng tư dùng để xác định thực thể trong quá trình bắt tay TLS.
Trong TLS một chiều, khi một ứng dụng kết nối với điểm cuối TLS trên máy chủ, kho khoá của máy chủ sẽ hiển thị chứng chỉ của máy chủ (chứng chỉ công khai) cho ứng dụng. Sau đó, khách hàng xác thực rằng chứng chỉ với một Tổ chức phát hành chứng chỉ (CA), chẳng hạn như SCrypto hoặc VeriSign.
Trong TLS hai chiều, cả máy khách và máy chủ đều duy trì một kho khoá có chứng chỉ và khoá riêng tư dùng để xác thực lẫn nhau. - Kho tin cậy chứa các chứng chỉ dùng để xác minh các chứng chỉ nhận được dưới dạng
là một phần của quá trình bắt tay TLS.
Trong TLS một chiều, bạn không cần kho tin cậy nếu chứng chỉ được một tổ chức phát hành chứng chỉ ký. Nếu chứng chỉ mà ứng dụng TLS nhận được được một CA hợp lệ ký, sau đó ứng dụng sẽ đưa ra yêu cầu đến CA để xác thực chứng chỉ. Ứng dụng TLS thường sử dụng kho lưu trữ tin cậy để xác thực các chứng chỉ tự ký nhận được từ máy chủ TLS hoặc các chứng chỉ không do một CA đáng tin cậy ký. Trong trường hợp này, ứng dụng sẽ điền các chứng chỉ mà ứng dụng vào kho tin cậy của mình tin tưởng. Sau đó, khi ứng dụng nhận được chứng chỉ máy chủ, chứng chỉ đến sẽ được xác thực dựa trên các chứng chỉ trong kho tin cậy của ứng dụng.
Ví dụ: ứng dụng TLS kết nối với một máy chủ TLS mà tại đó máy chủ này sử dụng một giao thức tự ký chứng chỉ. Vì đây là chứng chỉ tự ký nên ứng dụng không thể xác thực chứng chỉ này bằng CA. Thay vào đó, máy khách sẽ tải trước chứng chỉ tự ký của máy chủ vào kho lưu trữ tin cậy của máy khách. Sau đó, khi ứng dụng cố gắng kết nối với máy chủ, ứng dụng sẽ sử dụng kho tin cậy để xác thực chứng chỉ nhận được từ máy chủ.
Đối với TLS hai chiều, cả ứng dụng TLS và máy chủ TLS đều có thể sử dụng kho lưu trữ đáng tin cậy. Cửa hàng tin cậy là bắt buộc khi thực hiện TLS hai chiều khi Edge đóng vai trò là máy chủ TLS.
Chứng chỉ có thể do một tổ chức phát hành chứng chỉ (CA) cấp hoặc có thể do khoá riêng tư mà bạn tạo tự ký. Nếu bạn có quyền truy cập vào một CA, hãy làm theo hướng dẫn do CA cung cấp để tạo khoá và phát hành chứng chỉ. Nếu không có quyền truy cập vào CA, bạn có thể tạo chứng chỉ tự ký bằng một trong nhiều công cụ miễn phí có sẵn công khai, chẳng hạn như openssl.
Triển khai kho khoá và kho tin cậy trên Edge
Trên Edge, kho khoá chứa một hoặc nhiều tệp JAR, trong đó tệp JAR chứa:
- Chứng chỉ TLS dưới dạng tệp PEM – một chứng chỉ do tổ chức phát hành chứng chỉ (CA) ký, một chuỗi chứng chỉ mà chứng chỉ cuối cùng do CA ký hoặc một chứng chỉ tự ký.
- Khoá riêng tư dưới dạng tệp PEM. Edge hỗ trợ kích thước khoá lên đến 2048 bit. Bạn không bắt buộc phải sử dụng cụm mật khẩu.
Kho tin cậy tương tự như kho khoá, ngoại trừ việc kho tin cậy chỉ chứa chứng chỉ dưới dạng tệp PEM nhưng không có khoá riêng tư.
Nếu chứng chỉ là một phần của chuỗi, thì kho khoá/kho tin cậy phải chứa tất cả chứng chỉ trong chuỗi, dưới dạng tệp PEM riêng lẻ hoặc dưới dạng một tệp duy nhất. Nếu bạn sử dụng một tệp duy nhất, thì các chứng chỉ phải được sắp xếp theo thứ tự, trong đó chứng chỉ đầu tiên trong tệp là chứng chỉ dùng cho TLS, theo sau là chuỗi chứng chỉ theo thứ tự đến chứng chỉ CA. Bạn phải chèn một dòng trống giữa từng chứng chỉ trong tệp.
Edge cung cấp một API mà bạn dùng để tạo kho khoá và kho tin cậy. Các API thực tế là . Điểm khác biệt là khi tạo kho khoá, bạn sẽ truyền tệp JAR chứa chứng chỉ và khoá riêng tư. Khi tạo kho tin cậy, bạn chỉ truyền chứng chỉ dưới dạng tệp PEM.
Giới thiệu về định dạng của tệp chứng chỉ và tệp khoá
Các ví dụ trong tài liệu này cho thấy chứng chỉ TLS và khoá được xác định là tệp PEM, tuân thủ định dạng X.509. Nếu chứng chỉ hoặc khoá riêng tư của bạn không được xác định bằng tệp PEM, thì bạn có thể chuyển đổi tệp thành tệp PEM bằng cách sử dụng các tiện ích như openssl.
Tuy nhiên, nhiều tệp .crt và tệp .key đã ở định dạng PEM. Nếu các tệp này là tệp văn bản và được đưa vào:
-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
hoặc:
-----BEGIN ENCRYPTED PRIVATE KEY----- -----END ENCRYPTED PRIVATE KEY-----
Sau đó, các tệp này sẽ tương thích với định dạng PEM và bạn có thể sử dụng các tệp đó trong kho khoá hoặc kho tin cậy mà không cần chuyển đổi các tệp đó thành tệp PEM.
Nếu bạn có một chuỗi chứng chỉ và muốn sử dụng chuỗi đó trong một kho khoá hoặc kho tin cậy, thì bạn có thể kết hợp tất cả các chứng chỉ vào một tệp PEM duy nhất với một dòng mới giữa mỗi chứng chỉ. Chiến lược phát hành đĩa đơn các chứng chỉ phải theo thứ tự và chứng chỉ cuối cùng phải là chứng chỉ gốc hoặc chứng chỉ trung gian được ký bằng chứng chỉ gốc:
-----BEGIN CERTIFICATE----- (Your Primary TLS certificate) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Intermediate certificate) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Root certificate or intermediate certificate signed by a root certificate) -----END CERTIFICATE-----
Xem thông tin chi tiết về kho khoá hiện có
Kiểm tra môi trường của bạn để tìm mọi kho khoá hiện có bằng cách sử dụng List Keystores (Kho khoá của danh sách) và Truststores:
curl -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \ -u email:password
Đối với khách hàng sử dụng dịch vụ đám mây, kho khoá mặc định được cung cấp cho các tổ chức dùng thử miễn phí ở cả thử nghiệm và môi trường sản phẩm. Bạn sẽ thấy các kết quả sau cho cuộc gọi này cho cả hai môi trường:
[ "freetrial" ]
Bạn có thể sử dụng kho khoá mặc định này để kiểm thử API và đẩy API vào giai đoạn phát hành chính thức. Tuy nhiên, bạn thường tạo kho khoá của riêng bạn, bằng chứng chỉ và khoá của riêng bạn trước khi triển khai chính thức.
Đối với khách hàng Private Cloud, mảng được trả về sẽ trống cho đến khi bạn tạo kho khoá đầu tiên.
Kiểm tra nội dung của kho khoá bằng cách sử dụng API Lấy kho khoá hoặc kho tin cậy. Đối với khách hàng đám mây, bạn sẽ thấy một chứng chỉ TLS máy chủ duy nhất – chứng chỉ mặc định mà Apigee Edge cung cấp cho tài khoản dùng thử miễn phí.
curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \ -u email:password
Câu trả lời sẽ xuất hiện như sau:
{ "certs" : [ "wildcard.apigee.net.crt" ], "keys" : [ "freetrial" ], "name" : "freetrial" }
Bạn cũng có thể xem thông tin này trong giao diện người dùng quản lý Edge:
- Đăng nhập vào giao diện người dùng quản lý Edge tại https://enterprise.apigee.com (cloud) hoặc
http://<ms-ip>:9000
(tại cơ sở), trong đó<ms-ip>
là địa chỉ IP của nút Management Server (Máy chủ quản lý). - Trong trình đơn giao diện người dùng quản lý Edge, hãy chọn Quản trị > Chứng chỉ TLS (Bảo mật tầng truyền tải).
Nhận thông tin chi tiết về chứng chỉ TLS
Bạn có thể sử dụng API Get Cert Details from a Keystore or Truststore (Lấy thông tin chi tiết về chứng chỉ từ Kho khoá hoặc Kho tin cậy) để xem thông tin chi tiết về chứng chỉ TLS trong kho khoá, chẳng hạn như ngày hết hạn và tổ chức phát hành. Trước tiên, hãy lấy tên của chứng chỉ mà bạn quan tâm. Ví dụ này tìm nạp thông tin cho kho khoá có tên "freetrial".
curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \ -u email:password
Phản hồi mẫu:
{ "certs" : [ "wildcard.apigee.net.crt" ], "keys" : [ "freetrial" ], "name" : "freetrial" }
Sau đó, hãy sử dụng giá trị của thuộc tính certs để lấy thông tin chi tiết về chứng chỉ:
curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial/certs/wildcard.apigee.net.crt \ -u email:password
Câu trả lời mẫu:
{ "certInfo" : [ { "expiryDate" : "Wed, 23 Apr 2014 20:50:02 UTC", "isValid" : "Yes", "issuer" : "CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US", "subject" : CN=*.example.apigee.net, OU=Domain Control Validated", "subjectAlternativeNames" : ["*.example.apigee.net","*.example.apigee.net" ], "validFrom" : "Tue, 15 Apr 2014 09:17:03 UTC", "version" : 3 } ], "name" : "example.apigee.net.crt" }
Bạn cũng có thể xem thông tin này trong giao diện người dùng quản lý Edge:
- Đăng nhập vào giao diện người dùng quản lý Edge tại https://enterprise.apigee.com (đám mây) hoặc
http://<ms-ip>:9000
(tại chỗ), trong đó<ms-ip>
là địa chỉ IP của nút Máy chủ quản lý. - Trong trình đơn giao diện người dùng quản lý Edge, hãy chọn Quản trị > Chứng chỉ TLS (Bảo mật tầng truyền tải).
Trong giao diện người dùng Edge, bạn có thể chỉ định khoảng thời gian mà Edge cho biết trước một chứng chỉ để hết hạn. Theo mặc định, giao diện người dùng sẽ làm nổi bật mọi chứng chỉ dự kiến hết hạn trong 10 ngày tới.
Tạo một kho khoá
Kho khoá là dành riêng cho một môi trường trong tổ chức của bạn, ví dụ: phiên bản thử nghiệm hoặc phiên bản chính thức môi trường. Do đó, nếu bạn muốn kiểm thử kho khoá trong một môi trường thử nghiệm trước khi triển khai tập lệnh này với môi trường sản xuất, bạn phải tạo tập lệnh trong cả hai môi trường.
Quy trình tạo kho khoá gồm hai bước:
- Tạo tệp JAR chứa chứng chỉ và khoá riêng tư.
- Tạo kho khoá và tải Tệp JAR lên.
Tạo tệp JAR chứa chứng chỉ và khoá riêng tư của bạn
Tạo tệp JAR có khoá riêng tư, chứng chỉ và tệp kê khai. Tệp JAR phải chứa các tệp và thư mục sau:
/META-INF/descriptor.properties myCert.pem myKey.pem
Trong thư mục chứa cặp khoá và chứng chỉ của bạn, hãy tạo một thư mục có tên
/META-INF
. Sau đó, tạo một tệp
có tên là descriptor.properties
ở
/META-INF
bằng các lựa chọn sau
nội dung:
certFile={myCertificate}.pem keyFile={myKey}.pem
Tạo tệp JAR chứa cặp khoá và chứng chỉ của bạn:
jar -cf myKeystore.jar myCert.pem myKey.pem
Thêm descriptor.properties vào tệp JAR:
jar -uf myKeystore.jar META-INF/descriptor.properties
Tạo kho khoá và tải Tệp JAR
Để tạo kho khoá trong một môi trường, bạn chỉ cần chỉ định tên kho khoá cho API Tạo kho khoá hoặc kho tin cậy. Tên chỉ có thể chứa ký tự chữ-số:
curl -X POST -H "Content-Type: text/xml" \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \ -d '<KeyStore name="myKeystore"/>' -u email:password
Câu trả lời mẫu:
{ "certs" : [ ], "keys" : [ ], "name" : "myKeystore" }
Sau khi tạo kho khoá có tên trong một môi trường, bạn có thể tải các tệp JAR lên chứa chứng chỉ và khóa riêng tư bằng cách sử dụng Tải tệp JAR lên API Kho khoá:
curl -X POST -H "Content-Type: multipart/form-data" \ -F file="@myKeystore.jar" -F password={key_pass} \ "https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/{myKeystore}/keys?alias={key_alias}" \ -u email:password
trong đó tùy chọn -F
chỉ định
đường dẫn đến tệp JAR.
Trong lệnh gọi này, bạn chỉ định hai tham số truy vấn:
alias
– Xác định chứng chỉ và khoá trong kho khoá. Khi tạo một máy chủ lưu trữ ảo, bạn tham chiếu đến chứng chỉ và khoá theo tên bí danh của chứng chỉ đó.password
- Mật khẩu cho khoá riêng tư. Hãy bỏ qua tham số này nếu khoá riêng tư không có mật khẩu.
Xác minh rằng kho khoá của bạn đã được tải lên đúng cách:
curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystore \ -u email:password
Phản hồi mẫu:
{ "certs" : [ "myCertificate" ], "keys" : [ "myKey" ], "name" : "myKeystore" }
Tạo kho tin cậy
Các API mà bạn sử dụng để tạo kho tin cậy cũng giống như các API dùng để tạo kho khoá. Điểm khác biệt duy nhất là bạn truyền tệp chứng chỉ dưới dạng tệp PEM thay vì tệp JAR.
Nếu chứng chỉ là một phần của chuỗi, thì bạn phải tải tất cả chứng chỉ trong chuỗi lên kho tin cậy riêng biệt hoặc tạo một tệp chứa tất cả chứng chỉ, Thêm một dòng mới giữa mỗi chứng chỉ trong tệp. Chứng chỉ cuối cùng thường do tổ chức phát hành chứng chỉ ký. Ví dụ: trong kho tin cậy, bạn tải chứng chỉ ứng dụng khách, client_cert_1
và chứng chỉ của nhà phát hành chứng chỉ ứng dụng khách, ca_cert
lên.
Trong quá trình xác thực TLS hai chiều, quá trình xác thực ứng dụng sẽ thành công khi máy chủ gửi client_cert_1
đến ứng dụng trong quá trình bắt tay TLS.
Ngoài ra, bạn có chứng chỉ thứ hai, client_cert_2
, được ký bằng cùng một chứng chỉ,
ca_cert
. Tuy nhiên, bạn không tải client_cert_2
lên kho lưu trữ đáng tin cậy. Kho lưu trữ tin cậy vẫn chứa client_cert_1
và ca_cert
.
Khi máy chủ truyền client_cert_2
trong quá trình bắt tay TLS,
yêu cầu thành công. Lý do là Edge cho phép xác minh TLS thành công khi client_cert_2
không tồn tại trong kho lưu trữ tin cậy nhưng được ký bằng một chứng chỉ tồn tại trong kho lưu trữ tin cậy. Nếu bạn xoá chứng chỉ CA, ca_cert
, khỏi kho lưu trữ tin cậy, thì quá trình xác minh TLS sẽ không thành công.
Tạo một kho tin cậy trống trong môi trường bằng cách sử dụng Tạo kho khoá hoặc kho tin cậy, cùng một API mà bạn sử dụng để tạo kho khoá:
curl -X POST -H "Content-Type: text/xml" -d \ '<KeyStore name="myTruststore"/>' \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \ -u email:password
Tải chứng chỉ dưới dạng tệp PEM lên kho tin cậy bằng cách sử dụng tệp Tải chứng chỉ lên Truststore API:
curl -X POST -H "Content-Type: multipart/form-data" -F file="@trust.pem" \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myTruststore/certs?alias=myTruststore \ -u email:password
trong đó tuỳ chọn -F
chỉ định đường dẫn đến tệp PEM.
Xoá kho khoá hoặc kho tin cậy
Bạn có thể xoá kho khoá hoặc kho tin cậy bằng cách sử dụng API Xoá kho khoá hoặc kho tin cậy:
curl -X DELETE \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystoreName \ -u email:password
Câu trả lời mẫu:
{ "certs" : [ ], "keys" : [ ], "name" : "myKeystoreName" }
Nếu bạn xoá kho khoá hoặc kho tin cậy mà máy chủ lưu trữ ảo hoặc điểm cuối/mục tiêu/máy chủ mục tiêu đang sử dụng, thì tất cả lệnh gọi API thông qua máy chủ lưu trữ ảo hoặc điểm cuối/mục tiêu/máy chủ mục tiêu sẽ không thành công.