2012-09-28 120 views
5

最新的Chrome/IE9/Firefox都可以正常工作。 IE8抱怨該頁面無法顯示,看起來連接被中止。這裏是快速測試代碼。golang TLS是否支持IE8?

package main 

import (
    "time" 
    "fmt" 
    "net/http" 
) 

type Handler struct { 
} 

func (this *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 
    fmt.Fprintf(w, "Hello, %q", r.URL.Path) 
} 

func main() { 
    handler := &Handler{} 
    ss := &http.Server{ 
     Addr: ":443", 
     Handler: handler, 
     ReadTimeout: 10 * time.Second, 
     WriteTimeout: 10 * time.Second, 
     MaxHeaderBytes: 1 << 20, 
    } 
    ss.ListenAndServeTLS("cert.pem", "key.pem") 
} 

請注意,「cert.pem」和「key.pem」由「crypto/tls/generate_cert.go」生成。我試了一個真正的證書,但它也沒有工作。

+0

剛注意到iPad有同樣的問題。 – albert

+0

如果你做出正確的答案(如果可能的話)並接受答案,它會更好,更清晰。 –

回答

1

TLS是標準,所以沒有「TLS的IE8」或類似的東西。

我想問題是,IE8不相信你的(據稱是自簽名)證書。所以我想你可以在SO上找到this thread的答案。

您也可以擁有一個正確簽名的證書,但運行此IE8實例的計算機上的證書存儲沒有您的CA的證書(或證書的整個信任鏈如果您的證書已由下級CA簽名)進口,因此受信任。在這種情況下,您應該完全確認—獲取您的CA的證書(或CA的整個鏈,如果有的話)並將其導入到客戶端計算機上。

+0

iPad可能會比較棘手,因爲人們通常很難將事情上傳到iPad上。通過將從該證書生成的#PKCS12文件上傳到受信任的本地網絡服務器,然後導航到iPad上的Safari中的URL,我就成功地將我的CA證書導入到用戶的iPad上 - 下載後,它會自動提供證書。 – kostix

+3

感謝您的回覆。我實際上是指** golang標準庫中的TLS實現的當前狀態**,但無論如何,我都很抱歉表達混亂的表達。我從一個golang論壇瞭解到,問題是由SSLv2握手響應引起的。以下是相關問題主題,http://code.google.com/p/go/issues/detail?id=3930。 – albert

+0

@albert,感謝您分享您的發現。 – kostix