Tạo kho khoá và kho lưu trữ tin cậy cho đám mây riêng tư phiên bản 4.17.09 trở xuống

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 lưu trữ 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 công nghệ này là nơi chúng được sử dụng trong quá trình bắt tay TLS quá trình:

  • Kho khoá chứa một chứng chỉ TLS và khoá riêng tư dùng để xác định 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ủ hiển thị chứng chỉ của máy chủ (chứng chỉ công khai) cho ứng dụng khách. 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 dùng kho 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 được ký CA đáng tin cậy. 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 máy khách nhận được chứng chỉ máy chủ, chứng chỉ đến sẽ là được xác thực dựa trên các chứng chỉ trong kho tin cậy của nó.

    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ỉ đó 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 của mình để 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ữ uy tín. 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ể tự ký bằng khoá riêng tư mà bạn tạo. 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 để tạo khoá và cấp 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 cách sử dụng một trong nhiều công cụ miễn phí công khai, chẳng hạn như openssl.

Triển khai một kho khoá và Truststore trên Edge

Trên Edge, một 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 – là chứng chỉ do một tổ chức phát hành chứng chỉ ký (CA), một chuỗi chứng chỉ mà trong đó chứng chỉ cuối cùng được một CA ký hoặc một chứng chỉ tự ký chứng chỉ.
  • Khoá riêng tư dưới dạng tệp PEM. Edge hỗ trợ kích thước khoá tối đa 2048 bit. Cụm mật khẩu là không bắt buộc.

Kho tin cậy tương tự như kho khoá ngoại trừ việc kho lưu trữ này chỉ chứa các 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 một chuỗi thì kho khoá/kho tin cậy phải chứa tất cả các chứng chỉ trong 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 theo thứ tự, trong đó chứng chỉ đầu tiên trong tệp là chứng chỉ được dùng cho TLS theo chuỗi chứng chỉ, theo thứ tự, tới 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à . Sự 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 một 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 thể hiện chứng chỉ TLS và khoá được định nghĩa là tệp PEM. Các chứng chỉ và khoá này 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 những tệp này là văn bản tệp, và được đặt trong:

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

hoặc:

-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----

Sau đó, các tệp này tương thích với định dạng PEM và bạn có thể sử dụng chúng trong kho khoá hoặc đáng tin cậy mà không cần chuyển đổi chúng 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 cũng như đưa 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 sử dụng Cloud riêng tư, mảng được trả về sẽ trống cho đến khi bạn tạo mảng đầu tiên kho khoá.

Kiểm tra nội dung của kho khoá bằng cách sử dụng Nhận API Kho khoá hoặc Truststore. Đối với khách hàng sử dụng dịch vụ đám mây, bạn sẽ thấy một TLS của máy chủ chứng chỉ – 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:

  1. Đă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à IP của nút Máy chủ quản lý.
  2. 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).

Lấy thông tin chi tiết về chứng chỉ TLS

Bạn có thể sử dụng Nhận thông tin chi tiết về chứng chỉ từ một API Kho khoá hoặc Truststore để 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à nhà phát hành. Trước tiên, hãy lấy tên của chứng chỉ trong mà bạn quan tâm. Ví dụ này tìm nạp thông tin cho kho khoá được gọi là "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 mẫu:

{
 "certs" : [ "wildcard.apigee.net.crt" ],
 "keys" : [ "freetrial" ],
 "name" : "freetrial"
}

Sau đó, 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=&quot;GoDaddy.com, Inc.&quot;, 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:

  1. Đă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ở hạ tầng riêng), trong đó <ms-ip> là IP của nút Máy chủ quản lý.
  2. Trong trình đơn giao diện người dùng quản lý Edge, hãy chọn Quản trị > TLS Chứng chỉ.

Trong giao diện người dùng Edge, bạn có thể chỉ định trước khoảng thời gian mà Edge cho biết một chứng chỉ sẽ để 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ỉ được lên lịch hết hạn trong 10 vòng tới ngày.

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 đối với môi trường phát hành chính thức, bạn phải tạo mã đó trong cả hai môi trường.

Tạo kho khoá là quá trình hai bước:

  1. Tạo tệp JAR chứa chứng chỉ và khoá riêng tư của bạn.
  2. Tạo kho khoá rồi tải tệp JAR lên.

Tạo tệp JAR có 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 description.properties vào tệp JAR của bạn:

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 Tạo Keystore hoặc Truststore (API Kho khoá). 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 2 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

Câu trả lờ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á. Chiến lược phát hành đĩa đơn chỉ khác ở chỗ 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 lên tất cả các chứng chỉ trong chuỗi đó một cách riêng biệt vào kho tin cậy hoặc tạo một tệp chứa tất cả các chứng chỉ, hãy bao gồm một dòng mới giữa từng 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ý. Cho ví dụ: trong kho tin cậy, bạn tải một chứng chỉ máy khách (client_cert_1) và chứng chỉ máy khách lên chứng chỉ của nhà phát hành ca_cert.

Trong quá trình xác thực TLS hai chiều, xác thực ứng dụng thành công khi máy chủ gửi client_cert_1 gửi đến khách hàng dưới tên của quy 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 tin cậy. Kho tin cậy vẫn chứa client_cert_1ca_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. Nguyên nhân là do Edge cho phép xác minh TLS thành công khi client_cert_2 không tồn tại trong Truststore nhưng đã được ký bằng một chứng chỉ có trong kho tin cậy. Nếu bạn xoá CA chứng chỉ, ca_cert, từ Truststore thì xác minh TLS 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 công cụ Tạo một Kho khoá hoặc Truststore, cũng là API mà bạn 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 đó tùy 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 Xoá API Kho khoá hoặc Truststore:

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á một kho khoá hoặc kho tin cậy đang được một máy chủ lưu trữ hoặc mục tiêu ảo sử dụng điểm cuối/mục tiêu/máy chủ, tất cả lệnh gọi API thông qua máy chủ ảo hoặc thiết bị đầu cuối đích/máy chủ mục tiêu sẽ không thành công.