2012-09-28 90 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