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
Dấu hiệu
Ứng dụng khách nhận được mã phản hồi HTTP 502 cùng với thông báo Bad Gateway làm phản hồi cho các lệnh gọi API trong Edge Microgateway.
Ngoài ra, quản trị viên sẽ gặp lỗi self signed certificate in certificate
chain khi chạy lệnh
edgemicro configure.
Thông báo lỗi
Ứng dụng sẽ thấy thông báo phản hồi sau:
HTTP/1.1 502 Bad Gateway
Hai ví dụ phổ biến về phản hồi lỗi là:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
Ngoài ra, lỗi này có thể xảy ra khi chạy edgemicro configure:
{ Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
at TLSSocket.emit (events.js:189:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }Các nguyên nhân có thể
| Nguyên nhân | Mô tả | Hướng dẫn khắc phục sự cố áp dụng cho |
|---|---|---|
| Máy chủ đích xuất trình một chứng chỉ tự ký | Edge Microgateway sẽ xác minh chứng chỉ của máy chủ đích và nếu chứng chỉ đó không đáng tin cậy, thì Edge Microgateway sẽ phát sinh lỗi thời gian chạy. | Người dùng Edge Public Cloud và Private Cloud |
| Máy chủ quản lý Apigee Edge sử dụng chứng chỉ tự ký | Khi bạn định cấu hình Edge Microgateway lần đầu tiên, cổng này sẽ kết nối với Apigee Edge qua TLS để khởi động. Nếu Edge xuất hiện một chứng chỉ tự ký, thì quá trình này sẽ không thành công. | Người dùng Edge Private Cloud |
Nguyên nhân: Máy chủ đích xuất trình một chứng chỉ tự ký
Nếu máy chủ đích trình bày một chứng chỉ tự ký tại kết nối phía nam, thì theo mặc định, Edge Microgateway sẽ đưa ra lỗi này vì không tin tưởng chứng chỉ tự ký.
Chẩn đoán
Bạn có thể thấy lỗi sau trong nhật ký (/var/tmp/edgemicro-`hostname`-
*.log):
2021-05-18T10:52:46.425Z [error][0:8000][1][gsc][test][edgemicro_badtargethost][][][2db53f80- b7c7-11eb-9abe-05b6297863f1][microgateway-core][][GET][502][self signed certificate in certificate chain][SELF_SIGNED_CERT_IN_CHAIN][]
Mã lỗi SELF_SIGNED_CERT_IN_CHAIN cho biết Edge Microgateway rất có thể đã nhận được một chứng chỉ tự ký từ máy chủ đích. Để xác nhận điều này, hãy thực hiện các bước sau:
- Chạy lệnh
opensslsau để xác minh chuỗi chứng chỉ của máy chủ đích:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
Nếu chuỗi chứng chỉ của máy chủ mục tiêu thực sự là tự ký, thì đây là nguyên nhân gây ra vấn đề.
Trong ví dụ sau, hãy lưu ý rằng máy chủ đích trình bày một chứng chỉ tự ký:
echo | openssl s_client -connect untrusted-root.badssl.com:443 -servername untrusted-root.badssl.com | openssl x509 -noout
depth=1 C = US, ST = California, L = San Francisco, O = BadSSL, CN = BadSSL Untrusted Root Certificate Authority verify error:num=19:self signed certificate in certificate chain verify return:0 DONE
Độ phân giải
- Làm việc với nhóm sở hữu máy chủ đích để mua một chứng chỉ TLS phù hợp do một Tổ chức phát hành chứng chỉ (CA) đáng tin cậy ký.
Nếu không thể, hãy cân nhắc một trong các lựa chọn sau để cho phép chứng chỉ tự ký trong Edge Microgateway.
Cách 1: Đặt một thuộc tính hệ thống để cho phép Edge Microgateway tin tưởng tất cả các chứng chỉ
- Nếu bạn đang sử dụng docker, hãy tham khảo phần Sử dụng CA không được Node.js tin cậy
Nếu không, hãy xuất một biến môi trường có tên là
NODE_EXTRA_CA_CERTS, trỏ đến tệp CA gốc.Điều này được ghi lại trên trang web chính thức của Node.js.
Cách 2: Định cấu hình tệp cấu hình YAML của Edge Microgateway để tin tưởng chứng chỉ cụ thể đó cho máy chủ đích đó
- Đảm bảo rằng bạn có chứng chỉ (hoặc chuỗi) của máy chủ đích ở định dạng PEM. Để chuyển đổi các định dạng chứng chỉ khác sang PEM, hãy làm theo hướng dẫn trong phần Chuyển đổi chứng chỉ sang định dạng được hỗ trợ.
Nếu có chuỗi chứng chỉ, hãy đảm bảo rằng các chứng chỉ nằm đúng thứ tự. Chứng chỉ lá phải luôn đứng đầu, tiếp theo là chứng chỉ trung gian, sau đó là chứng chỉ gốc. Bạn có thể xem thêm phần giải thích về vấn đề này trong phần Xác thực chuỗi chứng chỉ.
Trong ví dụ sau, chúng ta đã định cấu hình tệp CA đáng tin cậy cho
untrusted-root.badssl.com.edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
Hướng dẫn định cấu hình chế độ này cũng có trong video Mô-đun Edge Microgateway – Định cấu hình TLS một chiều và hai chiều ở hướng nam. Hãy tham khảo bài viết Định cấu hình SSL trên máy chủ Edge Microgateway để biết thêm thông tin.
Nếu vấn đề vẫn tiếp diễn, hãy chuyển đến phần Phải thu thập thông tin chẩn đoán.
Nguyên nhân: Apigee Edge Management Server sử dụng chứng chỉ tự ký
Khi thiết lập Edge Microgateway lần đầu tiên, một trong những lệnh bạn cần chạy là edgemicro configure hoặc edgemicro private configure. Lệnh này sẽ khởi động cụm và liên hệ với Apigee Edge để tải thông tin cần thiết xuống.
Đối với Edge Private Cloud, URL của Máy chủ quản lý được xác định bằng đối số -m.
Nếu bạn đã bật TLS cho Máy chủ quản lý, thì Edge Microgateway sẽ cố gắng xác minh chứng chỉ do Máy chủ quản lý cung cấp.
Sau đây là ví dụ về lệnh edgemicro configure cho Edge Private Cloud:
edgemicro private configure -u <username> -p <password> -o apigee -e dev -v secure -r https://apigee-dev.net -m https://management.apigee-dev.net:8443
Nếu Máy chủ quản lý được định cấu hình bằng chứng chỉ tự ký, thì bạn sẽ gặp lỗi sau trong đầu ra của bảng điều khiển.
{ Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
at TLSSocket.emit (events.js:189:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }Chẩn đoán
- Trong trường hợp này, Máy chủ quản lý (
management.apigee-dev.net) có thể trả về một chứng chỉ TLS tự ký. - Có thể quản trị viên hệ thống Apigee Edge của bạn đã cung cấp chứng chỉ và có bản sao của chứng chỉ đó.
- Nếu không, hãy chạy lệnh sau để lấy thông tin về chứng chỉ:
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- Nếu Máy chủ quản lý có chứng chỉ tự ký, thì đó là nguyên nhân gây ra vấn đề này.
Độ phân giải
- Làm việc với nhóm sở hữu máy chủ đích để mua một chứng chỉ TLS phù hợp do một Tổ chức phát hành chứng chỉ (CA) đáng tin cậy ký.
Nếu không thể, hãy làm như sau để cho phép chứng chỉ tự ký trong Edge Microgateway.
- Đặt một thuộc tính hệ thống để cho phép Edge Microgateway tin tưởng tất cả các chứng chỉ.
- Nếu bạn đang sử dụng docker, hãy tham khảo Sử dụng CA không được Node.js tin cậy.
- Nếu không, hãy xuất một biến môi trường có tên là
NODE_EXTRA_CA_CERTS, trỏ đến tệp CA gốc.Điều này được ghi lại trên trang web chính thức của Node.js.
Phải thu thập thông tin chẩn đoán
Nếu vấn đề vẫn tiếp diễn ngay cả sau khi bạn làm theo hướng dẫn ở trên, hãy thu thập thông tin chẩn đoán sau đây rồi liên hệ với Nhóm hỗ trợ Apigee Edge:
- Tệp nhật ký: Thư mục mặc định là
/var/tmpnhưng có thể bị ghi đè trong tệpconfig.yamlchính (logging > dir parameter). Bạn nên thay đổilog > levelthànhinfotrước khi cung cấp tệp nhật ký cho Nhóm hỗ trợ Apigee Edge. - Tệp cấu hình: Cấu hình chính của Edge Microgateway nằm trong tệp YAML trong thư mục Edge Microgateway mặc định,
$HOME/.edgemicro. Có một tệp cấu hình mặc định có tên làdefault.yamlvà một tệp cho từng môi trường ORG-ENV-config.yaml. Tải tệp này lên đầy đủ cho tổ chức và môi trường chịu ảnh hưởng.Tài liệu tham khảo
Định cấu hình giao diện người dùng Edge để sử dụng TLS nhằm truy cập vào Edge API