5

最新的 Chrome/IE9/Firefox 一切正常。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”生成的。我尝试了一个真正的证书,它也不起作用。

4

2 回答 2

1

TLS 是一个标准,所以没有“IE8 的 TLS”之类的东西。

我想问题是 IE8 不信任您的(据说是自签名的)证书。所以我认为你可以在 SO 上的这个帖子中找到答案。

您也可以拥有正确签名的证书,但运行此 IE8 实例的计算机上的证书存储没有导入您的 CA 的证书(或证书的整个信任链,如果您的证书已由从属 CA 签名)导入并因此受信任. 在这种情况下,您应该这样做——获取您的 CA(或整个 CA 链,如果有)的证书并将其导入客户端计算机。

于 2012-09-28T16:19:17.933 回答
0

由于 OP 没有给出正确的答案,因此从问题中移出

这个问题可以通过这个补丁解决,“0001-Allow-SSLv2-compatible-client-hello-so-SSLv2-compati.patch”,问题http://code.google.com/p/go/issues/detail ?id=3930

但是,此修订版http://code.google.com/p/go/source/detail?r=8048fe8f6f4b并没有解决问题。

于 2012-10-02T15:49:10.410 回答