Tạo kho khoá và kho lưu trữ tin cậy bằng API quản lý Edge

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 Cloud và Edge dành cho Private Cloud phiên bản 4.18.01 trở lên.

Giới thiệu

Để định cấu hình chức năng dựa trên cơ sở hạ tầng khoá công khai, chẳng hạn như TLS, bạn cần phải tạo kho khoá và kho lưu trữ tin cậy cung cấp các khoá và chứng chỉ kỹ thuật số cần thiết.

Để biết giới thiệu về kho khoá, kho lưu trữ tin cậy và biệt hiệu, hãy xem Kho khoá và Cửa hàng tin cậ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.

Cách tạo kho khoá trong một môi trường:

  1. Sử dụng lệnh gọi API trong phần này để tạo kho khoá.
  2. Tạo một bí danh rồi tải một cặp chứng chỉ/khoá lên bí danh. Cách bạn tải chứng chỉ lên và dựa trên định dạng của cặp cert/key. Các phần sau đây mô tả cách tải lên từng loại cặp chứng chỉ/khoá:

Để tạo kho khoá, hãy chỉ định tên kho khoá cho phần Tạo một Keystore hoặc Truststore API. Tên kho khoá chỉ có thể chứa các ký tự chữ-số:

curl -X POST -u orgAdminEmail:password -H "Content-Type: text/xml" \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores \
-d '<KeyStore name="myKeystore"/>'

Câu trả lời mẫu:

{
  "certs" : [ ],
  "keys" : [ ],
  "name" : "myKeystore"
}

Tải chứng chỉ và khoá lên dưới dạng tệp JAR

Trước tiên, bạn phải tạo tệp JAR có khoá riêng tư, chứng chỉ và tệp kê khai. Tệp JAR tệp phải chứa các tệp và thư mục sau:

/META-INF/descriptor.properties
myCert.pem
myKey.pem

Một tệp JAR kho khoá chỉ có thể chứa ba tệp đó. Nếu bạn có một chuỗi chứng chỉ, tất cả các chứng chỉ trong chuỗi phải được nối vào một tệp PEM duy nhất, trong đó phải ký chứng chỉ cuối cùng bởi một tổ chức phát hành chứng chỉ gốc. Các chứng chỉ phải được thêm vào tệp PEM theo đúng thứ tự, với một dòng trống giữa mỗi chứng chỉ, có nghĩa là:

cert -> intermediate cert(1) -> intermediate cert(2) -> … -> root

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 mô tả.properties trong /META-INF có nội dung sau:

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 của bạn:

jar -uf myKeystore.jar META-INF/descriptor.properties

Giờ đây, bạn có thể tải các tệp JAR chứa chứng chỉ và khoá riêng tư lên bằng cách sử dụng hàm Tạo bí danh từ API JAR hoặc PKCS:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F file="@myKeystore.jar" -F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=keycertjar"

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:

  • alias_name – 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 sẽ tham chiếu chứng chỉ và khoá theo tên bí danh.
  • key_pword – Mật khẩu của khoá riêng tư. 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 -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Câu trả lời mẫu:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Tải chứng chỉ và khoá lên dưới dạng tệp PEM

Tải tệp PEM có chứa chứng chỉ và khóa cá nhân lên bằng cách sử dụng tệp Tạo bí danh từ API chứng chỉ và tệp PEM khóa:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F keyFile="@server.key" -F certFile="@signed.crt" \
-F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=keycertfile"

trong đó tuỳ chọn -F chỉ định đường dẫn đến tệp PEM.

Trong lệnh gọi này, bạn chỉ định:

  • alias_name – 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 sẽ tham chiếu chứng chỉ và khoá theo tên bí danh.
  • key_pword – Mật khẩu của khoá riêng tư. 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 -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Câu trả lời mẫu:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Tải chứng chỉ và khoá lên dưới dạng PKCS12/PFX tệp

Tải lên tệp PKCS12/PFX chứa chứng chỉ và khóa riêng tư bằng cách sử dụng Tạo bí danh từ API JAR hoặc PKCS:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" \
-F file="@myKeystore.p12" -F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=pkcs12"

trong đó tuỳ chọn -F chỉ định đường dẫn đến tệp P12.

Trong lệnh gọi này, bạn chỉ định:

  • alias_name – 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 sẽ tham chiếu chứng chỉ và khoá theo tên bí danh.
  • key_pword – Mật khẩu của khoá riêng tư. 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 -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Câu trả lời mẫu:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Tạo và tải chứng chỉ tự ký lên và khoá

Bạn có thể sử dụng Tạo một bí danh bằng cách tạo một API chứng chỉ tự ký để tạo một chứng chỉ tự ký và và tải chúng lên một bí danh. Lệnh gọi sau chỉ xác định thông tin bắt buộc để tạo chứng chỉ tự ký. Bạn có thể sửa đổi cuộc gọi này để thêm thông tin bổ sung:

curl -u orgAdminEmail:password -X POST --header "Content-Type: application/json"  \
-d "{
    "alias": "selfsigned",
    "subject": {
        "commonName": "mycert"
    }
}" \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?format=selfsignedcert"

Câu trả lời sẽ xuất hiện như sau:

{
  "alias": "selfsigned",
  "certsInfo": {
    "certInfo": [
      {
        "basicConstraints": "CA:FALSE",
        "expiryDate": 1491497204000,
        "isValid": "Yes",
        "issuer": "CN=mycert",
        "publicKey": "RSA Public Key, 2048 bits",
        "serialNumber": "00:d1:b4:78:e1",
        "sigAlgName": "SHA256withRSA",
        "subject": "CN=mycert",
        "subjectAlternativeNames": [],
        "validFrom": 1459961204000,
        "version": 3
      }
    ],
    "certName": "selfsigned-cert"
  },
  "keyName": "selfsigned"
}

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 là bạn chỉ tải tệp chứng chỉ, dưới dạng tệp PEM, lên kho lưu trữ uy tín.

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 duy nhất chứa tất cả các chứng chỉ. Bạn phải chèn một ký tự trống giữa mỗi chứng chỉ trong tệp.

Nếu bạn muốn tải nhiều chứng chỉ tự ký lên mà không thuộc chuỗi, thì hãy sử dụng cùng một kỹ thuật: nếu có nhiều chứng chỉ bạn muốn tin tưởng, hãy tải các chứng chỉ đó lên trong một tệp duy nhất.

Chứng chỉ cuối cùng thường do tổ chức phát hành chứng chỉ ký. Ví dụ: trong cửa hàng tin cậy, bạn tải lên chứng chỉ ứng dụng khách, client_cert_1 và chứng chỉ, 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 máy khách như một phầ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ởi 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ữ uy tín. Kho 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. Đây là vì 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ừ kho tin cậy thì không xác minh được TLS.

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 -u orgAdminEmail:password -X POST -H "Content-Type: text/xml" \
-d '<KeyStore name="myTruststore"/>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores

Sau khi bạn tạo kho tin cậy, hãy 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ạo bí danh từ API chứng chỉ PEM:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F certFile="@cert.pem" \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myTruststore/aliases?alias=myTruststore&format=keycertfile"

trong đó tuỳ chọn -F chỉ định đường dẫn đến tệp PEM.

Xem chi tiết về một kho khoá hoặc kho tin cậy

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 -u orgAdminEmail:password -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores

Đố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 sản xuất.

Đố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 -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/freetrial

Câu trả lời sẽ xuất hiện như sau:

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

Xem thông tin chi tiết về email đại diện

Lấy danh sách tất cả bí danh cho một kho khoá bằng cách sử dụng API liệt kê bí danh:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases"

Câu trả lời sẽ xuất hiện như sau:

[
  "alias1",
  "alias2",
  "alias3",
]

Để nhận tất cả thông tin về bí danh, chẳng hạn như ngày hết hạn và tổ chức phát hành, hãy sử dụng Nhận API bí danh rồi chỉ định tên bí danh:

curl  -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}"

Câu trả lời sẽ xuất hiện như sau:

{
  "alias": "alias1",
  "certsInfo": {
    "certInfo": [
      {
        "basicConstraints": "CA:TRUE",
        "expiryDate": 1459371335000,
        "isValid": "No",
        "issuer": "EMAILADDRESS=foo@bar.com, CN=smg, OU=doc, O=Internet Widgits Pty Ltd, L=noho, ST=Some-State, C=AU",
        "publicKey": "RSA Public Key, 1024 bits",
        "serialNumber": "00:86:a0:9b:5b:91:a9:fe:92",
        "sigAlgName": "SHA256withRSA",
        "subject": "EMAILADDRESS=foo@bar.com, CN=smg, OU=doc, O=Internet Widgits Pty Ltd, L=noho, ST=Some-State, C=AU",
        "subjectAlternativeNames": [],
        "validFrom": 1456779335000,
        "version": 3
      }
    ],
    "certName": "new\-cert"
  },
  "keyName": "newssl20"
}

Để tải chứng chỉ xuống cho một bí danh, hãy sử dụng Xuất chứng chỉ cho một API đại diện:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/e/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}/certificate"

Câu trả lời sẽ xuất hiện như sau:

-----BEGIN CERTIFICATE-----
MIIDojCCAwugAwIBAgIJAIagm1uRqf6SMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD
...
RBUkaTe/570sLHY0tvkIm5tEX36ESw==
-----END CERTIFICATE-----

Nếu chứng chỉ của bạn đã hết hạn và muốn gia hạn, bạn có thể tải một chứng chỉ xuống để ký Yêu cầu (CSR). Sau đó, bạn gửi CSR đến CA của mình để lấy chứng chỉ mới. Để tạo CSR cho bí danh, hãy sử dụng Tạo CSR cho bí danh API:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}/csr"

Câu trả lời sẽ xuất hiện như sau:

-----BEGIN CERTIFICATE REQUEST-----
MIIB1DCCAT0CAQAwgZMxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRl
...
RF5RMytbkxkvPxIE17mDKJH0d8aekv/iEOItZ+BtQg+EibMUkkjTzQ==
-----END CERTIFICATE REQUEST-----

Thêm chứng chỉ vào kho tin cậy cho TLS hai chiều

Khi sử dụng TLS hai chiều cho kết nối đến, tức là một yêu cầu API gửi vào Edge, kho tin cậy chứa một chuỗi chứng chỉ hoặc CA cho mỗi ứng dụng được phép gửi yêu cầu đến Edge.

Khi bắt đầu định cấu hình kho tin cậy, bạn có thể thêm tất cả chứng chỉ cho các ứng dụng đã biết. Tuy nhiên, theo thời gian, bạn có thể muốn thêm các chứng chỉ bổ sung vào kho tin cậy khi thêm khách hàng mới.

Cách thêm các chứng chỉ mới vào kho tin cậy dùng cho TLS hai chiều:

  1. Đảm bảo rằng bạn đang sử dụng tệp tham chiếu đến kho tin cậy trong máy chủ ảo.
  2. Tải chứng chỉ mới lên kho tin cậy như mô tả ở trên trong Tạo kho tin cậy.
  3. Cập nhật tham chiếu kho tin cậy để đặt tham chiếu đó thành cùng một giá trị. Bản cập nhật này khiến Edge tải lại kho tin cậy và chứng chỉ mới.

    Hãy xem bài viết Sửa đổi tệp đối chiếu để tìm hiểu thêm.

Xoá kho khoá/cửa hàng đáng tin cậy hoặc bí danh

Bạn phải thận trọng khi xoá một kho khoá/cửa hàng đáng tin cậy hoặc email đại diện. Nếu bạn xoá một kho khoá, kho tin cậy hoặc email đại diện đang được một máy chủ lưu trữ ảo, điểm cuối đích hoặc máy chủ mục tiêu sử dụng, tất cả đều Các lệnh gọi API qua máy chủ lưu trữ ảo hoặc thiết bị đầu cuối/máy chủ đích mục tiêu sẽ không thực hiện được.

Thông thường, quy trình bạn sử dụng để xoá kho khoá/kho tin cậy hoặc bí danh là:

  1. Tạo một kho khoá/cửa hàng đáng tin cậy hoặc email đại diện mới như mô tả ở trên.
  2. Đối với kết nối đến, nghĩa là một yêu cầu API vào Edge, hãy cập nhật cấu hình máy chủ ảo để tham chiếu kho khoá và bí danh khoá mới.
  3. Đối với kết nối ra ngoài, nghĩa là từ Apigee đến máy chủ phụ trợ:
    1. Cập nhật cấu hình TargetEndpoint cho mọi proxy API tham chiếu đến cấu hình cũ kho khoá và bí danh khoá để tham chiếu kho khoá và bí danh khoá mới. Nếu TargetEndpoint của bạn tham chiếu một TargetServer, hãy cập nhật định nghĩa TargetServer để tham chiếu kho khoá mới và bí danh khoá.
    2. Nếu kho khoá và kho tin cậy được tham chiếu trực tiếp từ TargetEndpoint định nghĩa, thì bạn phải triển khai lại proxy. Nếu TargetEndpoint tham chiếu đến một Định nghĩa TargetServer và định nghĩa TargetServer tham chiếu kho khoá và Truststore thì không cần triển khai lại proxy.
    3. Xác nhận rằng các proxy API của bạn đang hoạt động chính xác.
    4. Xoá kho khoá/truststore hoặc bí danh.

Xem Cập nhật chứng chỉ trong một email đại diện để biết thêm thông tin.

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 -u orgAdminEmail:password -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myKeystoreName

Nếu bạn xoá và tạo lại một kho khoá hoặc kho lưu trữ tin cậy đang được máy chủ ảo sử dụng, bạn phải triển khai lại các proxy API của mình.

Xoá bí danh

Bạn có thể xoá bí danh trong kho khoá hoặc kho tin cậy bằng cách sử dụng API Xoá bí danh:

curl -u orgAdminEmail:password -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myKeystoreName/aliases/{alias_name}