截至前幾天,Authorize.net upgraded their certificates so that they are signed using (SHA-2)。在Heroku的Rails中使用Authorize.net AIM API的自定義證書
我們的客戶現在就從Authorize.net返回此錯誤:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
所以我需要在Heroku我們的Rails應用程序來使用它們。 Heroku的根證書不包含這些,所以我必須將它們包含在ActiveMerchant中,但是我沒有找到明確的指示說明如何正確執行此操作。這是我迄今爲止所嘗試的:
我已經下載了Authorize.net要求的五個根證書,並將它們作爲「cacert.pem」鏈接在一起,替換了我的應用程序中現有的「cacert.pem」文件/vendor/plugins/active_merchant/lib/certs/
文件夾(爲了以防萬一,我先備份了舊的cacert.pem
文件)。這本身並沒有解決問題 - 我仍然在開發中遇到同樣的錯誤。
看着我創造了新的「cacert.pem」文件,我看到的是,在鏈(https://cacert.omniroot.com/bc2025.crt)的最後一個證書是這樣的:
0Çw0Ç_†��π0 *ÜHܘ �0Z10 UIE10U Baltimore10U CyberTrust1"0 UBaltimore CyberTrust Root0 000512184600Z 250512235900Z0Z10 UIE10U Baltimore10U CyberTrust1"0 UBaltimore CyberTrust Root0Ç"0 *ÜHܘ �Ç�0Ç Ç�£ª"´ò=WË&röµy‘)‚·Ëïı∞„[é+)ödfl°]Ì∞ m€(.Œb¢b˛¥à⁄Î8Î!ù¿A+R{àw」è«∫πàµj ÁsË@ß—Ã bç-Âè¶P「®P√(Íı´%áäöñ©g∏?’˜˘R/¬’ppè¿ Àö·Ÿ 3zw÷¯ÏπÒhDBH「¿¬§Æ^``˛∂¶¸¥›Y‘Yòcı•c‡ê}]≤zÛÖÍΑÆ^Ñ>_ˇÌiº˘96ruœwRMÛ…ê,π=Â…#S?$ò!\ô)Ω∆:ÏÁnÜ:kótc3Ωh1xçvø¸ûé]*ÜßMê‹'9�£E0C0UÂùY0ÇGXè˙T6Ü{:µM0Uˇ0ˇ0Uˇ0 *ÜHܘ �Ç�Ö]é‰oQhB†›ªO'%ÑΩ˜d˝-◊0„§Î⁄))∂y?vˆ#∏ ˘X§‘apΩajä’ Ω≈º0|÷È%çÜ@OÏã~8∆7OÌ›h1éL「≥tÓæu^Hpˇ\Ñ¿yÖ∏˝æe£¿¥¯R79’©1zø†*Ùô˜£EÇ„<^ıùûµ»û|.»§ûNKm˝pmkcΩdÊ∑ŒÚü.ª∑ÚPàsí¬‚„çö2´é›ÈÓ~5´êØ>0îz–3=ßeı¸éûbœGD,]ªµ2「G「8.–˛Å‹2jµÓ<’¸ÁÅ√$BÍc9©
所以我刪除的希望,這部分我至少有一個有效的文件。不知道這是否有幫助,因爲我仍然收到錯誤消息。
我也試圖改變ActiveMerchant的connection.rb
configure_ssl
方法,改變
http.ca_file = File.dirname(__FILE__) + '/../../certs/cacert.pem'
到
http.ca_file = Rails.root + "app/vendor/plugins/active_merchant/lib/certs/cacert.pem"
我不知道如果這實際上指出了我的cacert.pem
文件正確,因爲我無法從此文件寫入開發日誌。我甚至不知道這個文件是否會被正確的指向文件。這個在線信息嚴重缺乏。
我的網站一直關閉,直到我解決了這個問題。我處於完全恐慌狀態。任何想法,我需要看看/我需要做什麼?
我以前見過這個,而且一個rekey解決了我的問題。 – Noah
看看這個:https://devcenter.heroku.com/articles/ssl-endpoint – Noah
我的網站的SSL證書正常工作。這不是您指定連接到Authorize.net的AIM API時由ActiveMerchant使用的自定義證書的位置。我指出了我由Heroku Support領導的方向,它告訴我「這看起來像一個Ruby應用程序,我在這裏看到一些不同的HTTP客戶端庫。如果你閱讀文檔,通常有一個選項叫做ca_path或ca_file或ca_bundle將成爲您添加到包含您要使用的證書的應用程序的目錄。「 – digijim