Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Lihat
dokumentasi Apigee Edge.
Gejala
Permintaan Apigee Hybrid API gagal dengan error koneksi TLS. Error ini biasanya adalah reset koneksi dan memperingatkan kegagalan handshake.
Pesan error
Panggilan API gagal dengan TLS yang mirip dengan error yang ditampilkan di bawah, atau error lain tetapi tidak identik:
* TLSv1.2 (OUT), TLS handshake, Client hello (1): * LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to example.apis.com:443 * Closing connection 0 curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to example.apis.com:443
* (304) (OUT), TLS handshake, Client hello (1): * Recv failure: Connection reset by peer * LibreSSL/3.3.6: error:02FFF036:system library:func(4095):Connection reset by peer * Closing connection curl: (35) Recv failure: Connection reset by peer
* (304) (OUT), TLS handshake, Client hello (1): * LibreSSL/3.3.6: error:1404B410:SSL routines:ST_CONNECT:sslv3 alert handshake failure * Closing connection curl: (35) LibreSSL/3.3.6: error:1404B410:SSL routines:ST_CONNECT:sslv3 alert handshake failure
Kemungkinan penyebab
Penyebab | Deskripsi | Petunjuk pemecahan masalah yang berlaku untuk |
---|---|---|
Rahasia Kubernetes Ingress tidak ada | Rahasia Kubernetes untuk org-envgroup tidak ada di namespace Apigee. |
Apigee hybrid |
Sertifikat SSL tidak diformat dengan benar | Sertifikat SSL yang ditunjukkan di bagian virtualhosts dari file penggantian tidak diformat dengan benar. | Apigee hybrid |
Kunci SSL tidak cocok dengan sertifikat SSL | Kunci SSL tidak cocok dengan sertifikat SSL yang ditunjukkan di bagian virtualhosts file penggantian. | Apigee hybrid |
Penyebab: Rahasia Ingress Kubernetes tidak ada
Diagnosis
- Analisis log pod
apigee-watcher
di namespace apigee dan lihat apakah ada error.
Anda mungkin melihat error seperti berikut:
NOT_FOUND: failed to get secret "MY_HYBRID_PROJECT-ENV_GROUP" in namespace "apigee": secrets "MY_HYBRID_PROJECT-ENV_GROUP" not found
ketika:MY_HYBRID_PROJECT
adalah nama organisasi hybrid ApigeeENV_GROUP
adalah nama grup lingkungan
apigee-watcher
tidak dapat menemukan secret Kubernetes untuk grup lingkungan organisasi hybrid Apigee yang disebutkan di atas. - Pastikan bahwa secret Kubernetes memang tidak ada dengan menggunakan perintah berikut:
kubectl -n apigee get secrets | grep MY_HYBRID_PROJECT-ENV_GROUP
<no output>
Contoh ini tidak menampilkan secret Kubernetes untukMY_HYBRID_PROJECT-ENV_GROUP
. Data ini mungkin telah dihapus secara keliru.
Resolusi
Anda dapat membuat ulang secret Kubernetes yang hilang menggunakan sertifikat TLS dan informasi file kunci dari file overrides.yaml
:
- Jalankan perintah berikut untuk membuat ulang secret yang hilang:
apigeectl apply -f overrides/overrides.yaml --settings virtualhosts
Output dari perintah di atas akan menunjukkan bahwa rahasia berhasil dibuat:
secret/MY_HYBRID_PROJECT-ENV_GROUP created
- Pastikan secret Kubernetes berhasil dibuat menggunakan perintah berikut:
kubectl -n apigee get secrets | grep MY_HYBRID_PROJECT-ENV_GROUP
Output perintah ini akan menampilkan:
MY_HYBRID_PROJECT-ENV_GROUP Opaque 2 7s
Jika masalah berlanjut, buka Harus Mengumpulkan Informasi Diagnostik.
Penyebab: Sertifikat SSL tidak diformat dengan benar
Diagnosis
Pertama, pastikan file sertifikat adalah file .PEM. Untuk memeriksa apakah sertifikat SSL yang diformat
dengan benar dimuat ke apigee-ingressgateway
, ikuti langkah-langkah berikut.
Jika Anda telah mengonfigurasi TLS satu arah menggunakan pasangan sertifikat/kunci seperti yang dijelaskan di
Opsi 1: pasangan kunci/sertifikat,
jalankan:
openssl x509 -in $CERT_FILE -text -noout
Contoh output (tanpa error):
Certificate: Data: Version: 1 (0x0) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: C = US, O = xyz, OU = abc, CN = INTERIM-CN Validity Not Before: Dec 18 09:40:23 2023 GMT Not After : May 1 09:40:23 2025 GMT Subject: C = US, O = xyz, OU = abc, CN = shrey.example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: Trimmed Exponent: 65537 (0x10001) Signature Algorithm: sha1WithRSAEncryption Trimmed
Jika Anda telah mengonfigurasi TLS satu arah menggunakan secret Kubernetes seperti yang dijelaskan dalam Opsi 2: Rahasia Kubernetes, jalankan:
kubectl -n apigee get secret <$SECRET_NAME> -o jsonpath='{.data.cert}'| base64 -d > certfile ; openssl x509 -in certfile -text -noout kubectl -n apigee get secret <$SECRET_NAME> -o jsonpath='{.data.cert}'| base64 -d | openssl x509 -noout -text
Contoh output (tanpa error):
Certificate: Data: Version: 1 (0x0) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: C = US, O = xyz, OU = abc, CN = INTERIM-CN Validity Not Before: Dec 18 09:40:23 2023 GMT Not After : May 1 09:40:23 2025 GMT Subject: C = US, O = xyz, OU = abc, CN = shrey.example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: Trimmed Exponent: 65537 (0x10001) Signature Algorithm: sha1WithRSAEncryption Trimmed
Jika {i>output<i} dari perintah di atas terlihat seperti
unable to load certificate 136613728412992:error:0D078095:asn1 encoding routines:asn1_item_embed_d2i:sequence not constructed:../crypto/asn1/tasn_dec.c:321:Type=X509 136613728412992:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:../crypto/pem/pem_oth.c:33:
Untuk {i>error<i} seperti
error loading certificates 8360934016:error:09FFF066:PEM routines:CRYPTO_internal:bad end line
lihat bagian Resolusi.
Resolusi
Error dapat berbeda bergantung pada error format dalam file sertifikat. Perbaiki error sertifikat jika perlu.
Jika output menampilkan sertifikat, bukan error, pertimbangkan Penyebab: Kunci SSL tidak cocok dengan sertifikat SSL.
Penyebab: Kunci SSL tidak sesuai dengan sertifikat SSL
Diagnosis
Jika Anda telah mengonfigurasi TLS satu arah menggunakan pasangan sertifikat/kunci seperti yang dijelaskan dalam Opsi 1: pasangan kunci/sertifikat, jalankan:
diff -q <(openssl rsa -noout -modulus -in $KEY_FILE ) <(openssl x509 -noout -modulus -in $CERT_FILE)
Contoh output (tanpa error):
diff -q <(openssl rsa -noout -modulus -in my_server.key ) <(openssl x509 -noout -modulus -in my_server.pem) <No output>
Jika Anda telah mengonfigurasi TLS satu arah menggunakan secret Kubernetes seperti yang dijelaskan dalam Opsi 2: Rahasia Kubernetes, jalankan:
diff -q <(kubectl -n apigee get secrets $SECRET_NAME -o jsonpath='{.data.key}'| base64 -d | openssl rsa -noout -modulus) <(kubectl -n apigee get secrets $SECRET_NAME -o jsonpath='{.data.cert}'| base64 -d | openssl x509 -noout -modulus)
Contoh output (tanpa error):
diff -q <(kubectl -n apigee get secrets my-apigee-hybrid-env-grp -o jsonpath='{.data.key}'| base64 -d | openssl rsa -noout -modulus) <(kubectl -n apigee get secrets my-apigee-hybrid-env-grp -o jsonpath='{.data.cert}'| base64 -d | openssl x509 -noout -modulus) <No output>
Jika output perintah di atas menampilkan error seperti:
unable to load Private Key 133504499987776:error:09091064:PEM routines:PEM_read_bio_ex:bad base64 decode:../crypto/pem/pem_lib.c:949: Files /dev/fd/63 and /dev/fd/62 differ
maka Kunci SSL tidak cocok dengan sertifikat SSL dan lihat bagian Resolution.
Resolusi
Pastikan Anda memberikan kunci pribadi yang benar dan sertifikat SSL yang sesuai. Perbaiki masalah kunci pribadi dan sertifikat SSL.
Jika Anda tidak melihat output perintah apa pun, berarti sertifikat SSL dan kunci SSL akan cocok.
Harus Mengumpulkan Informasi Diagnostik
Jika masalah terus berlanjut setelah mengikuti petunjuk di halaman ini, kumpulkan informasi diagnostik berikut dan berikan ke Dukungan Apigee:
- Seluruh output panjang
curl
tempat Anda melihat error. - Ambil gambar
tcpdump
di komputer tempat Anda melihat error tersebut dan bagikan dengan menghapus semua informasi sensitif dan alamat IP. - Siapkan seluruh topologi jaringan dan alur jaringan setelah berkonsultasi dengan tim jaringan Anda untuk dibagikan kepada Dukungan Apigee.