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 に答える