Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Máy chủ ảo trên Edge xác định các miền và cổng mà một proxy API được hiển thị, và theo tiện ích, URL mà các ứng dụng dùng để truy cập vào một proxy API.
Máy chủ ảo cũng xác định xem proxy API được truy cập bằng giao thức HTTP hay bằng giao thức HTTPS được mã hoá sử dụng TLS. Khi định cấu hình một máy chủ lưu trữ ảo để sử dụng HTTPS và TLS, bạn sẽ tạo một máy chủ lưu trữ ảo trên Edge và định cấu hình máy chủ lưu trữ ảo đó để sử dụng kho khoá và kho tin cậy.
Tìm hiểu thêm:
- Giới thiệu về TLS/SSL
- Sử dụng TLS với Edge
- Giới thiệu về máy chủ ảo
- Định cấu hình máy chủ ảo cho Đám mây riêng
- Tài liệu tham khảo về thuộc tính máy chủ ảo
- Keystore và Truststore
Những điều kiện cần thiết để tạo máy chủ ảo
Trước khi tạo một máy chủ ảo, bạn cần có những thông tin sau:
- Tên miền công khai của máy chủ ảo. Ví dụ: bạn nên biết liệu tên công khai có phải là
api.myCompany.com,myapi.myCompany.com, v.v. hay không. Thông tin đó được dùng khi bạn tạo máy chủ ảo và cả khi bạn tạo bản ghi DNS cho máy chủ ảo. -
Đối với TLS một chiều, bạn cần tạo một kho khoá chứa những nội dung sau:
- Chứng chỉ TLS – một chứng chỉ do tổ chức phát hành chứng chỉ (CA) ký hoặc một chuỗi chứng chỉ trong đó chứng chỉ cuối cùng do một CA ký.
- Khoá riêng tư – 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.
- Đối với TLS hai chiều, bạn cần một kho khoá và một kho lưu trữ đáng tin cậy để lưu giữ chứng chỉ của máy khách và tuỳ ý, chuỗi CA của chứng chỉ. Bạn cần truststore ngay cả khi chứng chỉ được CA ký.
Hãy xem phần Kho khoá và kho khoá tin cậy để biết thêm thông tin về cách tạo kho khoá và kho khoá tin cậy.
Cấu hình máy chủ ảo cho TLS
Để tạo một máy chủ ảo, hãy tạo một đối tượng XML xác định máy chủ ảo.
Đối tượng XML sau đây sử dụng phần tử <SSLInfo> để xác định một máy chủ ảo cho cấu hình TLS một chiều qua HTTPS:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<OCSPStapling>off</OCSPStapling>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
</VirtualHost>Trong ví dụ này, phần tử <Enabled> được đặt thành true để bật TLS một chiều, còn phần tử <KeyStore> và <KeyAlias> chỉ định kho khoá và khoá mà kết nối TLS sử dụng.
Để bật TLS hai chiều, hãy đặt phần tử <ClientAuthEnabled> thành true và chỉ định một truststore bằng phần tử <TrustStore>. Truststore lưu giữ chứng chỉ của máy khách và (không bắt buộc) chuỗi CA của chứng chỉ.
Quyết định cách chỉ định tên kho khoá và kho tin cậy trong máy chủ ảo
Trong ví dụ về máy chủ ảo ở trên, bạn đã chỉ định kho khoá bằng cách sử dụng một reference. Một giá trị tham chiếu là một biến chứa tên của kho khoá, thay vì chỉ định trực tiếp tên kho khoá.
Lợi ích của việc sử dụng một tham chiếu là bạn có thể thay đổi giá trị của tham chiếu để thay đổi kho khoá mà máy chủ ảo sử dụng, thường là do chứng chỉ trong kho khoá hiện tại sắp hết hạn. Bạn không cần phải khởi động lại Bộ định tuyến biên khi thay đổi giá trị của tham chiếu.
Ngoài ra, bạn có thể sử dụng tên kho khoá theo nghĩa đen trong máy chủ ảo. Tuy nhiên, nếu sửa đổi máy chủ ảo để thay đổi tên kho khoá, bạn phải khởi động lại Bộ định tuyến Edge.
Hạn chế khi sử dụng các tham chiếu đến kho khoá và kho tin cậy
Bạn phải lưu ý đến hạn chế sau đây khi sử dụng các tham chiếu đến kho khoá và kho tin cậy:
- Bạn chỉ có thể sử dụng các tham chiếu kho khoá và kho tin cậy trong máy chủ ảo nếu bạn hỗ trợ SNI và bạn chấm dứt SSL trên Bộ định tuyến Apigee.
- Nếu có một trình cân bằng tải trước các Bộ định tuyến Apigee và bạn chấm dứt TLS trên trình cân bằng tải, thì bạn không thể sử dụng các tham chiếu kho khoá và kho lưu trữ đáng tin cậy trong các máy chủ ảo.
Sửa đổi máy chủ ảo hiện có để sử dụng các tham chiếu đến kho khoá và kho tin cậy
Apigee đặc biệt khuyến nghị rằng máy chủ ảo nên sử dụng giá trị tham chiếu đến kho khoá và kho tin cậy. Các tham chiếu cho phép bạn thay đổi kho khoá và kho tin cậy mà máy chủ ảo sử dụng mà không cần khởi động lại Bộ định tuyến Edge.
Nếu máy chủ ảo của bạn hiện được định cấu hình để sử dụng tên theo nghĩa đen của kho khoá hoặc kho tin cậy, bạn có thể chuyển đổi chúng để sử dụng các giá trị tham chiếu. Để thực hiện việc này, hãy cập nhật máy chủ ảo để sử dụng các tham chiếu, rồi khởi động lại Bộ định tuyến Edge.
Thiết lập các giao thức và thuật toán mật mã TLS cho Edge phiên bản 4.15.07 trở xuống
Nếu đang sử dụng Edge phiên bản 4.15.07 trở xuống, thì bạn có thể đặt giao thức TLS và các mật mã mà máy chủ lưu trữ ảo sử dụng bằng cách dùng thẻ con <Ciphers> và <Protocols> của thẻ <SSLInfo>. Các thẻ này được mô tả trong bảng dưới đây.
Ví dụ:
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>myTestKeystore</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>myTestKeystore</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
<Ciphers>
<Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
<Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
</Ciphers>
<Protocols>
<Protocol>TLSv1.2</Protocol>
</Protocols>
</SSLInfo>
</SSLInfo>Thẻ <Cipher> sử dụng tên Java và JSSE của thuật toán mật mã. Ví dụ: đối với Java 8, hãy xem
http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.
Chỉ định các thuật toán mật mã và giao thức TLS cho Edge phiên bản 4.16.01 đến 4.16.09
Trong Edge 4.16.01 đến 4.16.09, bạn đặt các giao thức và mật mã mặc định cho máy chủ ảo trên toàn cầu trên Bộ định tuyến. Sau đó, các giá trị mặc định này sẽ áp dụng cho tất cả máy chủ ảo.
Sử dụng mã thông báo để chỉ định các giao thức và thuật toán mật mã mặc định:
- Để chỉ định các giao thức mặc định, hãy sử dụng mã thông báo
conf_load_balancing_load.balancing.driver.server.ssl.protocols - Để chỉ định các thuật toán mật mã mặc định cho Bộ định tuyến, hãy sử dụng mã thông báo
conf_load_balancing_load.balancing.driver.server.ssl.ciphers
Giá trị mặc định của mã thông báo conf_load_balancing_load.balancing.driver.server.ssl.protocols là:
conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
Chế độ cài đặt này chỉ định rằng Bộ định tuyến hỗ trợ các phiên bản TLS 1.0, 1.1 và 1.2. Chỉ định một danh sách các giá trị được phân tách bằng dấu cách cho mã thông báo.
Giá trị mặc định của mã thông báo conf_load_balancing_load.balancing.driver.server.ssl.ciphers là:
conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES
Chế độ cài đặt này chỉ định:
- Yêu cầu độ dài khoá từ 128 bit trở lên (
HIGH). - Loại trừ các mật mã không có quy trình xác thực (
!aNULL) - Loại trừ các bộ mật mã sử dụng MD5 (
!MD5) - Loại trừ các bộ thuật toán mật mã bằng DH (bao gồm DH ẩn danh, DH tạm thời và DH cố định) VÀ triple DES (
!DH+3DES) - Loại trừ bộ thuật toán mật mã sử dụng phương thức trao đổi khoá RSA VÀ DES ba lần (
!RSA+3DES)
Để biết thông tin về cú pháp và các giá trị mà mã thông báo này cho phép, hãy xem phần Mật mã OpenSSL. Xin lưu ý rằng mã thông báo này sử dụng tên thuật toán mã hoá OpenSSL (chẳng hạn như AES128-SHA256) chứ không phải tên thuật toán mã hoá Java/JSSE (chẳng hạn như TLS_RSA_WITH_AES_128_CBC_SHA256).
Cách đặt mã thông báo cho Bộ định tuyến:
- Chỉnh sửa tệp
/opt/apigee/customer/application/router.properties. Nếu tệp đó không tồn tại, hãy tạo tệp. - Đặt mã thông báo
conf_load_balancing_load.balancing.driver.server.ssl.ciphers. Ví dụ: để chỉ định TLSv1.2 và loại trừ các bộ thuật toán mật mã bằng khoá chia sẻ trước, hãy thêm!PSK:conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2 conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
- Đảm bảo rằng tệp
router.propertiesthuộc sở hữu của apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Khởi động lại Bộ định tuyến Edge:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Kiểm tra giá trị của mã thông báo:
/opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers
Thiết lập các tham số máy chủ lưu trữ ảo TLS cho Edge phiên bản 4.17.01 trở lên
Nếu đang sử dụng Edge phiên bản 4.17.01 trở lên, thì bạn có thể đặt một số thuộc tính TLS (Bảo mật tầng truyền tải) cho từng máy chủ ảo, chẳng hạn như giao thức và thuật toán mật mã TLS (Bảo mật tầng truyền tải), bằng cách sử dụng thẻ con <Properties> của thẻ <VirtualHost>. Các thẻ này được mô tả trong phần Tài liệu tham khảo về thuộc tính máy chủ ảo.
Ví dụ:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<OCSPStapling>off</OCSPStapling>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://myTestKeystoreRef</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
<Properties>
<Property name="proxy_read_timeout">50</Property>
<Property name="keepalive_timeout">300</Property>
<Property name="proxy_request_buffering">off</Property>
<Property name="proxy_buffering">off</Property>
<Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property>
<Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property>
</Properties>
</VirtualHost>Để biết thông tin về cú pháp và các giá trị mà mã thông báo ssl_ciphers cho phép, hãy xem Các mật mã OpenSSL.
Xin lưu ý rằng mã thông báo này sử dụng tên thuật toán mã hoá OpenSSL (chẳng hạn như AES128-SHA256) chứ không phải tên thuật toán mã hoá Java/JSSE (chẳng hạn như TLS_RSA_WITH_AES_128_CBC_SHA256).
Tạo máy chủ ảo sử dụng HTTPS
Ví dụ này chỉ định kho khoá cho máy chủ lưu trữ ảo bằng cách sử dụng một tham chiếu. Việc sử dụng một tham chiếu cho phép bạn thay đổi kho khoá mà không cần phải khởi động lại Bộ định tuyến.
Hãy làm theo quy trình sau để tạo máy chủ ảo:
- Tạo và định cấu hình một kho khoá có tên là myTestKeystore bằng cách sử dụng quy trình được mô tả tại đây: Kho khoá và kho khoá tin cậy. Đảm bảo rằng kho khoá sử dụng tên bí danh là myKeyAlias cho chứng chỉ và khoá riêng tư.
-
Sử dụng lệnh gọi API POST sau đây để tạo tham chiếu có tên là keystoreref cho kho khoá mà bạn đã tạo ở trên:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="keystoreref"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:passwordThông tin tham chiếu chỉ định tên của kho khoá và loại thông tin tham chiếu là
KeyStore.Sử dụng lệnh gọi API GET sau đây để xem thông tin tham khảo:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password Tạo máy chủ ảo bằng cách sử dụng API Tạo máy chủ ảo, trong đó
<ms-IP>là địa chỉ IP hoặc tên miền của nút Máy chủ quản lý.Đảm bảo bạn chỉ định đúng giá trị tham chiếu kho khoá và bí danh khoá:
curl -X POST -H "Content-Type:application/xml" \ http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \ -d '<VirtualHost name="newTLSTrustStore2"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> <OCSPStapling>off</OCSPStapling> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>' \ -u email:password- Tạo một bản ghi DNS cho máy chủ ảo khớp với bí danh máy chủ.
Nếu bạn có bất kỳ proxy API hiện có nào, hãy thêm máy chủ ảo vào phần tử
<HTTPConnection>trong ProxyEndpoint. Máy chủ ảo sẽ tự động được thêm vào tất cả các proxy API mới.Xem phần Cập nhật một proxy API sau khi tạo một máy chủ ảo trong bài viết Giới thiệu về máy chủ ảo.
Sau khi cập nhật một proxy API để sử dụng máy chủ ảo và tạo bản ghi DNS cho bí danh máy chủ, bạn có thể truy cập vào proxy API như minh hoạ bên dưới:
https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}Ví dụ:
https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282
Tạo và sửa đổi các tham chiếu đến một kho khoá hoặc kho tin cậy
Bạn có thể tuỳ ý định cấu hình máy chủ ảo để sử dụng một reference thay vì keystore hoặc truststore. Lợi ích của việc sử dụng một tham chiếu là bạn có thể cập nhật tham chiếu để trỏ đến một kho khoá hoặc kho tin cậy khác nhằm cập nhật chứng chỉ TLS mà không cần phải khởi động lại Bộ định tuyến.
Ví dụ: bên dưới là một máy chủ ảo sử dụng một tham chiếu đến kho khoá:
<VirtualHost name="myTLSVHost">
<HostAliases>
<HostAlias>apiTLS.myCompany.com</HostAlias>
</HostAliases>
<Interfaces/>
<Port>9006</Port>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://keystoreref</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>
</VirtualHost>Sử dụng lệnh gọi API POST sau đây để tạo tham chiếu có tên là keystoreref:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
<Refers>myTestKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>'
-u email:password
Thông tin tham chiếu chỉ định tên của kho khoá và loại kho khoá.
Sử dụng lệnh gọi API GET sau đây để xem thông tin tham khảo:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
Để sau này thay đổi thông tin tham chiếu để trỏ đến một kho khoá khác, hãy đảm bảo rằng bí danh có cùng tên, hãy sử dụng lệnh gọi PUT sau:
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
<Refers>myNewKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>'
-u email:password