2

玩弄 golang 的net/http包和 SPDY。有些事情真的让我很困惑:

*tls.Connof TLSNextProto函数根本无法读取。任何读取尝试都会收到“对等方重置连接”错误。

运行以下程序,然后https://localhost:8080/使用启用 SPDY 的 Chrome 访问。

我是否以错误的方式使用 TLS 连接对象?请帮忙。

package main

import (
    "crypto/tls"
    "log"
    "net/http"
)

func main() {
    server := &http.Server{
        Addr: ":8080",
        TLSConfig: &tls.Config{
            NextProtos: []string{"spdy/3"},
        },
        TLSNextProto: map[string]func(*http.Server, *tls.Conn, http.Handler){
            "spdy/3": func(s *http.Server, conn *tls.Conn, h http.Handler) {
                buf := make([]byte, 1)
                if n, err := conn.Read(buf); err != nil {
                    log.Panicf("%v|%v\n", n, err)
                }
            },
        },
    }

    err := server.ListenAndServeTLS("/path/to/host.cert", "/path/to/host.key")
    if err != nil {
        log.Fatal(err)
    }
}
4

1 回答 1

1

好的。我知道了。是证书问题。如果 server.ListenAndServeTLS() 使用的证书未由浏览器 (Chrome) 信任的 CA 签名,则连接将被重置。要创建您自己的 CA 和证书,请遵循http://datacenteroverlords.com/2012/03/01/creating-your-own-ssl-certificate-authority/

于 2013-09-25T00:55:57.247 回答