2014-07-14 32 views
0

我在Google App Engine上的自定義域上有一個應用程序,我需要捕獲JSON包。發送JSON到Google App Engine上的HTTPS不起作用

我使用http://www.hurl.it/測試和URL是這樣的:但是https://subdomain.website.net.au/folder/

這給服務器錯誤,如果我取下S,只是使用HTTP請求正常工作。 Google需要什麼才能使其發揮作用?

更新:

使用curl和運行以下命令:

curl --verbose --data "@json.txt" --header "Content-Type:application/json" "https://subdomain.website.net.au/folder/" 

我得到的錯誤:「無法獲取本地頒發者證書」當我從http://curl.haxx.se/ca/cacert.pem下載證書文件

並運行:

curl --verbose --cacert "cacert.pem" --data "@json.txt" --header "Content-Type:application/json" "https://subdomain.website.net.au/folder/" 

它工作正常,作爲e xpected。這是否意味着問題與hurl.it?如果是這樣的話,我有一個客戶試圖向我發送數據,但它也不能正常工作。

UPDATE2:

問題最終是客戶端不支持SNI,所以我只好用VIP代替。這花錢,是一種較舊的方法,但更兼容。

回答

0

有一篇關於如何在developers.google.com上爲自定義域設置SSL的文章。

基本上你需要兩樣東西:

  • 的SNI或虛擬IP證書
  • 您的域名必須是一個祈禱,谷歌Apps域安裝證書

您的證書,您的谷歌Apps域名和使用App Engine的證書會讓你付出代價。如果您可以使用YOURAPPID.appspot.com域名,您可以免費獲得SSL。如果你需要你的自定義域名,我建議上面的網站。


更新你的問題後: 看起來證書頒發機構(CA)是未知或不可信的客戶端。這可以通過使用thawte或verisign的商業證書來解決。或者,您可以將CA證書添加到操作系統或客戶端應用程序的證書存儲中。換句話說:在您的操作系統或應用程序中將CA證書安裝爲受信任的根證書。應該這樣做。

哦,你的假設是正確的。 hurl.it不知道CA,因此拒絕將您的證書視爲無效或未知發行人。


更新2: 克雷格,你GeoTrust的證書應該罰款。請嘗試以下操作:

  1. 請驗證您是否可以使用普通網絡瀏覽器訪問您的應用程序託管的此頁面或任何其他頁面。它不應該抱怨證書。如果它確實存在,並且您需要爲證書添加例外規則,那麼明智的配置仍然是錯誤的。

    我有一段時間沒有這樣做,但上次我使用了一個SSL證書,我以某種方式將實際的證書和CA連接起來,我確信有這個教程。因爲沒有找到CA.cert,所以以這種方式提供它是有道理的。

    developers.google.com: '證書文件最多可以包含五個證書;這個數字包括鏈接和中間證書。'

    wikipedia

  2. 見,因爲它不具有捲曲時,提供CA手動這是爲您的客戶上傳數據的臨時解決方案工作。

  3. 請注意,並非所有應用程序都使用系統存儲區來存儲證書。 Firefox例如擁有自己的證書存儲,並且它完全忽略了您在操作系統的根證書存儲中所做的所有更改(至少在Windows下是如此)
  4. 一旦您確認網站使用HTTPS(請參閱1)您可以在該應用程序中創建一個簡單的表單,其中包含一個textarea,您可以在其中粘貼JSON數據並使用jquery或其他方式將其發送到您的應用程序。雖然這並不理想,但驗證您的應用程序和SSL設置是否正常工作並且問題在其他地方是非常好的測試。
  5. 如果上傳是您現在需要的全部內容,那麼您始終可以將curl和CA.cert打包在一起,並添加一個小批處理文件,以便進行適當的調用。

這是我可以給你沒有看到你的實際設置的所有信息。我的建議是擺弄客戶和證書,因爲這就是問題所在。它與JSON數據無關。

+0

對不起,我應該指定,我有SSL設置和工作正常。我可以主持一個SSL網站,我只是不能發送JSON消息。 – Craig

+0

那麼,那麼錯誤是什麼?你檢查了你的應用程序引擎日誌嗎?您使用的應用程序是否信任使用的證書(hurl.it)?你的JSON格式不正確,或者只是很大?只要有一個servlet或一段代碼處理對給定資源的請求,App Engine就不應該關心發送給您的應用程序的內容。 – konqi

+0

是的,在日誌中沒有錯誤,我可以在另一臺服務器上使用同一個域但是不同的子域託管相同的腳本,hurl.it使用相同的JSON工作得很好。 GAE似乎以不同的方式對待它。我也嘗試了一個非常小的JSON包,但仍然在hurl.it上出現錯誤。 GAE沒有記錄任何東西,我覺得很奇怪,但是使用HTTP它記錄了一個顯示所有內容都正常的條目,但是HTTPS就好像什麼都沒有觸及服務器。 Google是否有關於JSON來自哪裏的規定?如果有的話,有關於此的文檔? – Craig