Theo mặc định trong Apigee Edge cho Đám mây riêng tư 4.54.00, Bộ định tuyến
(Nginx) và Bộ xử lý thông báo (Java 21) bật TLSv1.2 và
TLSv1.3. Tuỳ thuộc vào nhu cầu kinh doanh và các biện pháp bảo mật
bạn có thể muốn hạn chế các giao thức được phép hoặc bật lại các giao thức cũ. Tài liệu này mô tả cách định cấu hình giao thức TLS
cho lưu lượng truy cập theo hướng bắc và hướng nam trên Bộ định tuyến và Bộ xử lý thông báo.
Đối với Bộ định tuyến, bạn cũng có thể đặt giao thức cho từng máy chủ ảo. Xem bài viết Định cấu hình quyền truy cập TLS vào API cho Đám mây riêng tư để biết thêm thông tin.
Đối với Bộ xử lý thông báo, bạn có thể đặt giao thức cho từng TargetEndpoint. Xem bài viết Định cấu hình TLS từ Edge đến phần phụ trợ (Đám mây và Đám mây riêng tư) để biết thêm thông tin.
Đặt giao thức TLS trên Bộ định tuyến
Các thuộc tính sau đây giúp bạn đặt giao thức TLS mong muốn trên Bộ định tuyến để giao tiếp theo hướng bắc.
Để đặt giao thức TLS trên Bộ định tuyến, hãy đặt các thuộc tính trong tệp router.properties:
- Mở tệp
router.propertiestrong một trình chỉnh sửa. Nếu tệp này không tồn tại, hãy tạo tệp:vi /opt/apigee/customer/application/router.properties
- Đặt các thuộc tính theo ý muốn:
# Possible values are space-delimited list of: TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
- Lưu thay đổi.
- Đảm bảo rằng tệp thuộc tính thuộc sở hữu của người dùng
apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Khởi động lại Bộ định tuyến:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Xác minh rằng giao thức được cập nhật chính xác bằng cách kiểm tra tệp Nginx
/opt/nginx/conf.d/0-default.conf:cat /opt/nginx/conf.d/0-default.conf
Đảm bảo rằng giá trị của
ssl_protocolslàTLSv1.2. - Nếu đang sử dụng TLS hai chiều với một máy chủ ảo, bạn cũng phải đặt giao thức TLS trong máy chủ ảo như mô tả trong bài viết Định cấu hình quyền truy cập TLS vào API cho Đám mây riêng tư.
Đặt giao thức TLS trên Bộ xử lý thông báo
Các thuộc tính sau đây giúp bạn đặt giao thức TLS mong muốn trên Bộ xử lý thông báo để giao tiếp theo hướng nam. Phần này cũng mô tả cách xử lý các giao thức và thuật mã mật mã TLS bị tắt.
Để đặt giao thức TLS trên Bộ xử lý thông báo, hãy đặt các thuộc tính trong tệp
message-processor.properties:
- Mở tệp
message-processor.propertiestrong một trình chỉnh sửa. Nếu tệp này không tồn tại, hãy tạo tệp:vi /opt/apigee/customer/application/message-processor.properties
- Định cấu hình các thuộc tính bằng cú pháp sau:
# Possible values are a comma-delimited list of TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3 conf/system.properties+https.protocols=[TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Possible values are a comma-delimited list of SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 # SSLv3 is required conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3[,TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Specify the ciphers that the Message Processor supports. (You must separate ciphers with a comma.): conf_message-processor-communication_local.http.ssl.ciphers=cipher[,...]
Ví dụ:
conf/system.properties+https.protocols=TLSv1.2 conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1 conf_message-processor-communication_local.http.ssl.ciphers=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Để xem danh sách đầy đủ các thuộc tính liên quan, hãy xem bài viết Định cấu hình TLS giữa Bộ định tuyến và Bộ xử lý thông báo.
- Lưu thay đổi.
- Đảm bảo rằng tệp thuộc tính thuộc sở hữu của người dùng
apigee:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Khởi động lại Bộ xử lý thông báo:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Nếu đang sử dụng TLS hai chiều với phần phụ trợ, hãy đặt giao thức TLS trong máy chủ ảo như mô tả trong Định cấu hình TLS từ Edge đến phần phụ trợ (Đám mây và Đám mây riêng tư).
Xử lý các thuật toán mật mã và giao thức TLS cũ: Hãy tham khảo các phần sau đây nếu bạn muốn xử lý các thuật toán mật mã hoặc giao thức cũ.
Xử lý TLS cũ
Trong Java 21, các giao thức TLS cũ (TLSv1,
TLSv1.1 và SSLv3) và các khoá Diffie-Hellman yếu
(DH keySize < 1024) bị tắt theo mặc định trong
jdk.tls.disabledAlgorithms. Để bật các giao thức này, hãy sử dụng một trong các
lựa chọn sau:
- Lựa chọn A: Hiện đại hoá giao thức phụ trợ: Cập nhật máy chủ phụ trợ để
hỗ trợ TLS 1.2 hoặc TLS 1.3 và đảm bảo kích thước tham số Diffie-Hellman là
2048 bit trở lên (
>= 2048bit). - Lựa chọn B: Bật lại các giao thức cũ bằng CwC: Duy trì
khả năng tương thích với các phần phụ trợ TLS 1.0 hoặc TLS 1.1 cũ bằng cách xoá
TLSv1, TLSv1.1khỏiconf_jvmsecurity_jdk.tls.disabledAlgorithmstrong/opt/apigee/customer/application/message-processor.propertiesbằng mã có cấu hình (CwC):# Re-enable TLS 1.0 and TLS 1.1 for legacy backend connectivity conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, TLS_RSA_*, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
Xử lý các thuật toán mật mã RSA tĩnh
Apigee Edge cho Đám mây riêng tư phiên bản 4.54.00 chạy trên Java 21,
trong đó các bộ thuật toán mật mã RSA tĩnh (TLS_RSA_*) thiếu trao đổi khoá Diffie-Hellman tạm thời (ECDHE hoặc DHE) bị tắt theo mặc định trong
jdk.tls.disabledAlgorithms (ví dụ:
TLS_RSA_WITH_AES_128_CBC_SHA hoặc
TLS_RSA_WITH_AES_256_CBC_SHA). Để hỗ trợ các phần phụ trợ yêu cầu
bộ thuật toán mật mã RSA tĩnh, hãy sử dụng lựa chọn sau:
- Bật lại các thuật toán mật mã RSA tĩnh bằng CwC: Duy trì
khả năng tương thích với các phần phụ trợ cũ bằng cách xoá
TLS_RSA_*khỏiconf_jvmsecurity_jdk.tls.disabledAlgorithmstrong/opt/apigee/customer/application/message-processor.propertiesbằng mã có cấu hình (CwC):# Re-enable Static RSA ciphers for backward compatibility with legacy Java 8 backends conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
Sau khi sửa đổi các thuộc tính, hãy khởi động lại Bộ xử lý thông báo bằng
apigee-service:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Bật TLS 1.3 cho máy chủ
Phần này giải thích cách bật TLS 1.3 cho các máy chủ ảo cụ thể. Để bật TLS 1.3, hãy thực hiện các bước sau trên các nút Máy chủ quản lý
- Trên mỗi nút Máy chủ quản lý, hãy chỉnh sửa tệp
/opt/apigee/customer/application/management-server.propertiesvà thêm dòng sau (nếu tệp này không tồn tại, hãy tạo tệp):conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
Đối với tệp này, các giao thức được phân tách bằng dấu phẩy và có phân biệt chữ hoa chữ thường.
- Lưu tệp.
- Đảm bảo rằng tệp thuộc sở hữu của người dùng
apigee:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Khởi động lại Máy chủ quản lý:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Lặp lại các bước trước đó trên từng nút Máy chủ quản lý một by one.
- Tạo (hoặc cập nhật) máy chủ ảo hiện có bằng thuộc tính sau. Xin lưu ý rằng các giao thức được phân tách bằng dấu cách và có phân biệt chữ hoa chữ thường:
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }Ví dụ sau đây cho thấy một vhost mẫu có thuộc tính này:
{ "hostAliases": [ "api.myCompany,com", ], "interfaces": [], "listenOptions": [], "name": "secure", "port": "443", "retryOptions": [], "properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }, "sSLInfo": { "ciphers": [], "clientAuthEnabled": "false", "enabled": "true", "ignoreValidationErrors": false, "keyAlias": "myCompanyKeyAlias", "keyStore": "ref://myCompanyKeystoreref", "protocols": [] }, "useBuiltInFreeTrialCert": false }
Kiểm thử TLS 1.3
Để kiểm thử TLS 1.3, hãy nhập lệnh sau:
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
Xin lưu ý rằng bạn chỉ có thể kiểm thử TLS 1.3 trên các ứng dụng khách hỗ trợ giao thức này. Nếu TLS 1.3 không được bật, bạn sẽ thấy thông báo lỗi tương tự như sau:
sslv3 alert handshake failure