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á và kho tin cậy cho Edge cho Private Cloud phiên bản 4.17.09 trở về trước.
Giới thiệu về kho khoá và kho tin cậy
Kho khoá và kho lưu trữ đáng tin cậy xác định kho lưu trữ chứng chỉ bảo mật dùng để mã hoá TLS. Sự 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ẽ trình bày chứng chỉ của máy chủ (chứng chỉ công khai) cho ứng dụng. Sau đó, ứng dụng xác thực chứng chỉ đó bằng Tổ chức phát hành chứng chỉ (CA), chẳng hạn như Symantec hoặc VeriSign.
Trong TLS hai chiều, cả ứng dụng và máy chủ đều duy trì một kho khoá có chứng chỉ và khoá riêng tư riêng dùng để xác thực lẫn nhau. - Kho lưu trữ đáng tin cậy chứa các chứng chỉ dùng để xác minh chứng chỉ nhận được trong quá trình bắt tay TLS.
Trong TLS một chiều, bạn không cần kho lưu trữ đáng tin cậy nếu chứng chỉ do một CA hợp lệ ký. Nếu chứng chỉ mà ứng dụng TLS nhận được do một CA hợp lệ ký, thì ứng dụng sẽ gửi 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 tin cậy vào kho lưu trữ đáng tin cậy. 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áy chủ TLS, trong đó máy chủ sử dụng chứng chỉ tự ký. 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 đó, ứng dụng sẽ tải trước chứng chỉ tự ký của máy chủ vào kho tin cậy. 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. Bạn cần có kho tin cậy 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 mỗi 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ế cũng giống nhau. Điểm khác biệt là khi tạo kho khoá, bạn sẽ truyền một 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à 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, 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 có một chuỗi chứng chỉ và muốn sử dụng chuỗi đó trong 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 có một dòng mới giữa mỗi chứng chỉ. 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 do chứng chỉ gốc ký:
-----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 API List Keystores and Truststores (Liệt kê kho khoá và kho tin cậy):
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, chúng tôi cung cấp kho khoá mặc định cho các tổ chức dùng thử miễn phí ở cả môi trường thử nghiệm và môi trường sản xuất. Bạn sẽ thấy kết quả sau đây cho lệnh gọi này đối với 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 lên môi trường phát hành chính thức, nhưng thường thì bạn sẽ tạo kho khoá của riêng mình, với chứng chỉ và khoá của riêng mình, trước khi triển khai lên môi trường phát hành chính thức.
Đối với khách hàng sử dụ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
Phản hồ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 (đá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.
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
Phản hồ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.
Trong giao diện người dùng Edge, bạn có thể chỉ định thời gian trước khi Edge cho biết một chứng chỉ sắp 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 kho khoá
Kho khoá dành riêng cho một môi trường trong tổ chức của bạn, chẳng hạn như môi trường thử nghiệm hoặc môi trường sản xuất. Do đó, nếu muốn kiểm thử kho khoá trong môi trường thử nghiệm trước khi triển khai kho khoá đó vào môi trường phát hành chính thức, bạn phải tạo kho khoá 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ư
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ỉ, hãy tạo một thư mục có tên là /META-INF
. Sau đó, hãy tạo một tệp có tên là descriptor.properties
trong /META-INF
với nội dung sau:
certFile={myCertificate}.pem keyFile={myKey}.pem
Tạo tệp JAR chứa cặp khoá và chứng chỉ:
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 lên
Để 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 chứa các 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
Phản hồi mẫu:
{ "certs" : [ ], "keys" : [ ], "name" : "myKeystore" }
Sau khi tạo một 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à khoá riêng tư bằng cách sử dụng API Tải tệp JAR lên 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 đó tuỳ 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áy chủ ảo, bạn tham chiếu đến chứng chỉ và khoá theo tên đại diện của chứng chỉ và khoá đó.password
– Mật khẩu cho khoá riêng tư. Bỏ qua thông 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 đã 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ó một 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 sẽ 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ỉ lên dưới dạng tệp PEM vào kho tin cậy bằng cách sử dụng API Tải chứng chỉ lên kho tin cậy:
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
Phản hồ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.