Pengecualian I/O OAuth2 API PayPal: rekan tidak diautentikasi

Selama berbulan-bulan, rutinitas OAuth2 saya bekerja dengan sempurna. Rutinitas OAuth2 membuat token baru sehingga saya dapat menjalankan operasi API.

Tiba-tiba, seminggu yang lalu, saya mulai mendapatkan kesalahan berikut:

Charset     [empty string]
ErrorDetail     I/O Exception: peer not authenticated
Filecontent     Connection Failure
Header  [empty string]
Mimetype    Unable to determine MIME type of file.
Responseheader  
struct [empty]
Statuscode  Connection Failure. Status code unavailable.
Text    YES 

Saya menggunakan Coldfusion 10 dan saya tidak mengubah apa pun di lingkungan pengujian saya selama beberapa bulan, jadi perubahan itu pasti berasal dari pihak PayPal.

Saya menggunakan panggilan http berikut:

<cfset clientid = "***">
<cfset secret = "***">

<cfhttp method="post" url="https://api.sandbox.paypal.com/v1/oauth2/token" result="result">
<cfhttpparam type="header" name="Content_Type" value="application/json">
<cfhttpparam type="formfield" name="grant_type" value="client_credentials">
<cfhttpparam type="header" name="Authorization" value="Basic #ToBase64(clientid & ":" & secret)#">
</cfhttp>

Adakah yang bisa membantu saya memecahkan masalah ini?


person Charles Robertson    schedule 01.02.2016    source sumber
comment
Perbarui/Impor sertifikat PayPal ke keystore JVM Anda. Sertifikat terbaru mulai tanggal 2 September 2015.   -  person Alex    schedule 02.02.2016
comment
@Alex Terima kasih atas sarannya. Saya mengimpor sertifikat root G5 Verisign Kelas 3 2048-bit terbaru dan sertifikat titik akhir kotak pasir yang relevan ke dalam cacerts, menggunakan keytool. Meskipun saya tidak yakin saya perlu mengimpor yang terakhir. Saya memulai ulang CF dan saya masih menerima kesalahan yang sama. Saya telah menghabiskan waktu berhari-hari untuk hal ini dan saya sedikit marah karena PayPal baru saja melakukan perubahan ini tanpa benar-benar memberi tahu pengembang. Saya kira saya bukan satu-satunya pengembang CF yang menggunakan PayPal RESTFUL API?   -  person Charles Robertson    schedule 03.02.2016
comment
@Alex Sebenarnya saya mengganti nama alias Verisign karena sudah ada sertifikat dengan alias yang sama. Mungkin saya harus menghapus Verisign Class 3 G5 yang lama dan memberi nama sertifikat baru dengan alias lama. Apakah menurut Anda ini akan membuat perbedaan?   -  person Charles Robertson    schedule 03.02.2016
comment
@Alex Bisakah Anda memberi saya URL sertifikat yang Anda bicarakan, kalau-kalau saya mengimpor yang salah?   -  person Charles Robertson    schedule 03.02.2016
comment
Apakah Anda sudah menginstal Pembaruan ColdFusion terbaru? Ini menambahkan dukungan untuk SNI, yang mungkin menjadi masalah dengan server PayPal. Selain itu: Pastikan untuk mengimpor semua sertifikat (termasuk rantai) pada subdomain tujuan pengiriman permintaan.   -  person Alex    schedule 03.02.2016
comment
@Alex Saya menggunakan CF10, tetapi saya menggunakan pembaruan 12 dari 17. Saya hanya mengirim permintaan ke api.sandbox. paypal.com. Saya mengimpor sertifikat verisign 2048 bit terbaru, dan menurut saya ini baru saja diperbarui oleh PayPal, meskipun nama sertifikatnya sama sejak 2006: knowledge.verisign.com/support/mpki-for-ssl-support/ Saya akan memperbarui CF10 ke pembaruan 17, dan memberi tahu Anda apa yang terjadi?   -  person Charles Robertson    schedule 03.02.2016
comment
@Alex Sayangnya, saya tidak dapat memperbarui CF10 setelah pembaruan 12 dari 17, karena saya mendapatkan pengecualian 'tanda tangan tidak valid' ketika mencoba menginstal pembaruan. Saya akan menghapus CF10 dan menginstal CF11. Saya menggunakan Railo di server produksi saya, jadi saya dapat memperbaruinya tanpa masalah. Menariknya, remote ACF lokal & Railo saya mengalami masalah PayPal yang sama pada saat yang bersamaan. Saya kira ini berarti masalah sertifikat, kecuali jika Railo mengalami masalah SNI juga, itu kebetulan besar...   -  person Charles Robertson    schedule 03.02.2016
comment
@Alex Setelah saya menginstal CF11, token PayPal dikeluarkan tanpa masalah. Jelas, cacert CF11 dan penyedia keamanan kompatibel. Tapi terima kasih atas bantuanmu...   -  person Charles Robertson    schedule 03.02.2016


Jawaban (2)


Oke, saya mengalami masalah yang persis sama saat menghubungkan ke REST API PayPal baru dan alasan di balik kesalahan tersebut adalah migrasi dari sertifikat Root Verisign G2 (yang tidak lagi didukung PayPal) dan perpindahan ke algoritma SHA-256 dan sertifikat bertanda tangan Verisign G5.

Kebingungan muncul karena Coldfusion 10 dan Coldfusion 11 sudah memiliki cacert di ColdFusion Truststore jadi mengapa masih tidak berfungsi?

Setelah berjam-jam mencoba dan mencari, saya menemukan masalah sertifikat terletak pada folder JRE, bukan ColdFusion. Hal itu dengan cepat mengarahkan saya untuk memutakhirkan ColdFusion agar berjalan pada versi terbaru Java JDK 1.8_101 (server pengujian saya berjalan pada JVM 1.7 dan server produksi pada 1.8_25 (jadi saya memutakhirkan keduanya dan kode dijalankan (yang mirip dengan Charles kode di postingan asli).

Jadi, inilah langkah-langkah sederhananya:

  1. Tingkatkan ColdFusion ke pembaruan terbaru dari Administrator ColdFusion
  2. Instal Java JDK terbaru (saat ini 1.8_101) dan ingat di mana Anda menginstalnya
  3. Kembali ke ColdFusion Administrator dan buka Java dan JVM di bawah Pengaturan Server dan arahkan JVM ke folder JRE di JDK baru, mis. /{JDK_home}/Contents/Home/jre lalu restart ColdFusion.

OAuth2.0 PayPal akan berfungsi kembali! (Setidaknya itu berhasil untuk saya). Saya harap ini membantu seseorang menghemat waktu frustrasi dan diyakinkan bahwa PayPal REST API terbaru berfungsi dengan ColdFusion (meskipun mereka tidak memberikan contoh - saya sedang berupaya mengirimkannya ke PayPal melalui Github segera).

person James Martin    schedule 30.09.2016
comment
Terima kasih atas jawaban ini. Saya yakin Anda benar tentang versi JDK, tetapi instalasi bersih ke versi terbaru CF11, sepertinya memperbaiki masalah saya. - person Charles Robertson; 01.10.2016
comment
Ya, instalasi yang bersih juga dapat memperbaiki masalah ini, tetapi Anda kehilangan semua konfigurasi dan pengaturan Anda, jadi cukup mengupgrade JDK atau Server JRE adalah solusi untuk produksi ColdFusion 10 atau 11. - person James Martin; 02.10.2016

Sekadar memberi tahu semua orang, setelah saya menginstal CF11, token PayPal dikeluarkan tanpa masalah. Jelas, cacert CF11 dan penyedia keamanan kompatibel. Sekarang, saya harus mencoba memilah Railo, yang mungkin lebih sulit, karena saya menggunakan Railo 4. Saya akan mencoba memperbarui Railo ke versi 4+ terbaru...

Memperbarui:

Agar ini berfungsi di Railo, Anda perlu melakukan instalasi bersih Lucee 4.5 [penerus Railo 4.2]. JANGAN UPDATE DARI RAILO KE LUCEE DENGAN MEMINDAHKAN .JARs. Saya ulangi Anda perlu melakukan instalasi bersih Lucee 4.5:

http://lucee.org/downloads.html

Saya kemudian menemukan masalah dengan adaptor BonCode. Jika Anda mendapatkan kesalahan berikut dari IIS:

IIS Handler "BonCode-Tomcat-CFM-Handler" memiliki modul yang buruk

Periksa Kumpulan Aplikasi IIS Anda. Di Kumpulan Aplikasi, klik "Pengaturan Dasar" di panel sebelah kanan. Jika Versi .NET adalah 2.0.0 ubah ke 4.X dan simpan kembaliannya.

TIP:

Pastikan file web.config Anda memiliki pengaturan berikut untuk melihat kesalahan ini:

<configuration>
   <system.webServer>
      <httpErrors errorMode="Detailed"/>
   </system.webServer>
</configuration>

Ini akan menghemat pekerjaan Anda selama seminggu :)

Semoga beruntung semuanya!

person Charles Robertson    schedule 03.02.2016
comment
Kami menggunakan PayPal dengan CF 10 dengan baik, jadi mungkin ini lebih merupakan masalah terkait lingkungan di sini. Omong-omong. Anda sebaiknya meningkatkan instalasi Railo Anda ke Lucee (penerus Railo). - person Alex; 03.02.2016
comment
@Alex Ya. Saya memutakhirkan Railo 4.2 ke Lucee 4.5 besok. Mudah-mudahan, ini akan menyelesaikan masalah PayPal di server jarak jauh saya. Saya rasa Anda benar tentang CF10, hanya saja saya tidak dapat menginstal pembaruan, yang Anda sebutkan. Satu-satunya pilihan saya adalah menginstal CF11... - person Charles Robertson; 04.02.2016
comment
Daftar penyedia keamanan CF11 jauh lebih luas daripada versi CF10 [pembaruan 12]. Saya pikir pembaruan CF10 13 - 17 mungkin menambahkan beberapa item ke daftar ini. Dukungan yang lebih baik untuk SHA-2 [2048]. Saya cukup yakin sertifikat saya solid... - person Charles Robertson; 04.02.2016
comment
@Alex Saya dalam masalah besar. Saya telah memperbarui Railo 4.2 ke Lucee 4.5 [sangat mudah :)]. Saya telah memperbarui semua sertifikat yang relevan menggunakan keytool ke cacerts. Tapi saya mendapatkan kesalahan berikut [menggunakan atribut cfhttp throwonerror]: Cause string javax.net.ssl.SSLHandshakeException url string api.sandbox.paypal.com/v1/oauth2/token Detail string ErrorCode string 0 Extended_Info string ExtendedInfo string Pesan string Menerima peringatan fatal: handshake_failure String StackTrace Menerima peringatan fatal: handshake_failure di sun.security. ssl.Alerts.getSSLException(Alerts.jav - person Charles Robertson; 04.02.2016
comment
Tolong bantupppppppppppppppppppppppp. Bisnis saya menjadi sia-sia karena masalah gila ini. Apakah PayPal menyadari bahwa mereka mengacaukan penghidupan masyarakat? Saya mungkin harus membeli lisensi CF11 Enterprise untuk server produksi saya, karena saya tahu ini berfungsi dengan ACF. - person Charles Robertson; 04.02.2016
comment
@Alex Tautan ini sepertinya menyarankan agar saya perlu memperbarui beberapa file .jar di JRE\lib\security: -a-https-site" title="sslhandshakeException saat menyambung ke situs https">stackoverflow.com/questions/30350120/ Tahukah Anda file .jar yang mana dan di mana saya bisa mendapatkan pembaruannya. Saya dapat menyalinnya dari direktori ACF11 JRE, tetapi ini tampaknya berisiko??? - person Charles Robertson; 04.02.2016
comment
Sesuatu dengan JRE Anda sepertinya rusak/ketinggalan jaman. Pertimbangkan untuk menginstal ulang Lucee secara bersih. Anda mungkin ingin memeriksa saluran Lucee di cfml.slack.com untuk bantuan lebih lanjut. - person Alex; 05.02.2016
comment
@Alex Terima kasih. Saya mengetahui bahwa saya mungkin perlu menyalin file .jar JSafeJCE ke Lucee/jdk/jre/lib/security. Ini adalah versi kekuatan tak terbatas. Ini adalah perpustakaan yang sama yang digunakan ACF11. Jika ini tidak berhasil, saya akan melakukan instalasi Lucee yang bersih, seperti yang disarankan. Saya telah melihat daftar penyedia keamanan Lucee dan JSafeJCE tidak ada dalam daftar ini. Di ACF11, ini adalah penyedia default dan menyelesaikan masalah ini secara lokal. Pertempuran berlanjut... - person Charles Robertson; 05.02.2016
comment
shilpikhariwal.com/2012/04/ - person Charles Robertson; 05.02.2016
comment
ca.com/us/ support/ca-support-online/product-content/ Meskipun menurut saya file java.security sebenarnya tidak perlu diedit, seperti yang disarankan artikel ini. Saya telah melihat file java.security ACF11 dan tidak ada entri JSafeJCE, tetapi ini adalah penyedia keamanan default ketika membaca daftar secara terprogram. ‹cfset objSecurity = createObject(“java”, “java.security.Security”) /› ‹cfdump var=#objSecurity.getProviders()# /› Kecuali ACF11 memiliki file java.security khusus yang bersembunyi di suatu tempat... - person Charles Robertson; 05.02.2016
comment
@Alex Jenius. Terima kasih atas saranmu. Instalasi Lucee 4.5 yang bersih memungkinkan PayPal untuk berjabat tangan lagi. Ingat, saya mengalami kesulitan saat mencoba membuat Adaptor BonCode berfungsi dengan IIS. Saya harus memeriksa Kumpulan Aplikasi IIS saya. Di Kumpulan Aplikasi, saya mengklik Pengaturan Dasar di panel sebelah kanan. Dan mengubah Versi .NET dari 2.0.0 berubah menjadi 4.X. Ditambah lagi, saya harus menambahkan Pemetaan BonCode Handler lain untuk '*.cfml'. Namun akhirnya semuanya baik-baik saja. Sekali lagi terima kasih atas bantuan Anda. Saya akan menambahkan sedikit ini ke jawaban di atas... - person Charles Robertson; 05.02.2016