2016-07-03 175 views
1

我想知道如何使用GoLang Https服務器的godaddy的SSL證書。godaddy與GoLang的SSL證書

我目前使用下面的代碼:

srv := &http.Server{ 
    Addr: httpsPortStr, 
    Handler: n, 
    ReadTimeout: time.Duration(config.CfgIni.ReadTimeout) * time.Second, 
    WriteTimeout: time.Duration(config.CfgIni.WriteTimeout) * time.Second, 
} 
err := srv.ListenAndServeTLS(<CERTIFICATE_FILE>,<PRIVATE_KEY_FILE>) 

我仍然有sf_bundle-g2-g1.crt。我如何將它添加到證書鏈中?

更新

@ Vonc的答案是真正有用的,我只是缺少最後一兩件事。 我使用http.Server實例來更改ReadTimeout和WriteTimeout參數。我怎麼能用tls來做到這一點?

我給這家前面代碼:

srv := &http.Server{ 
    Addr: httpsPortStr, 
    Handler: n, 
    ReadTimeout: time.Duration(config.CfgIni.ReadTimeout) * time.Second, 
    WriteTimeout: time.Duration(config.CfgIni.WriteTimeout) * time.Second, 
} 
err := srv.ListenAndServeTLS(config.CfgIni.CertificateFile,config.CfgIni.PrivateKeyFile) 

的感謝!

回答

2

您可以在file-server-go部分看到full example here
證書鏈應該在x509.NewCertPool()

cert, err := tls.LoadX509KeyPair("certs/server.pem", "certs/server.key") 
if err != nil { 
    log.Fatalf("server: loadkeys: %s", err) 

} 
certpool := x509.NewCertPool() 
pem, err := ioutil.ReadFile("certs/ca.pem") 
if err != nil { 
    log.Fatalf("Failed to read client certificate authority: %v", err) 
} 
if !certpool.AppendCertsFromPEM(pem) { 
    log.Fatalf("Can't parse client certificate authority") 
} 

config := tls.Config{ 
    Certificates: []tls.Certificate{cert}, 
    ClientAuth: tls.RequireAndVerifyClientCert, 
    ClientCAs: certpool, 
} 
config.Rand = rand.Reader 
service := "0.0.0.0:8000" 
listener, err := tls.Listen("tcp", service, &config) 

被加載在你的情況,ioutil.ReadFile("sf_bundle-g2-g1.crt")

我使用http.Server例如爲了改變ReadTimeout和WriteTimeout參數

server := &http.Server{ 
    Addr:  "0.0.0.0:8000", 
    TLSConfig: tlsConfig, 
    ReadTimeout: time.Duration // maximum duration before timing out read of the request, 
    WriteTimeout: time.Duration // maximum duration before timing out write of the response 
} 

(實際時間更換time.Duration

然後:

err := server.ListenAndServeTLS(certFile, keyFile string) 
log.Fatal(err) 

注意ListenAndServeTLS永遠ret呃非零錯誤。

+0

謝謝!只是一個問題,更新主帖 – ufk

+0

謝謝。我可以使用tls.Config對象作爲TLSConfig參數,如http://www.bite-code.com/2015/06/25/tls-mutual-auth-in-golang/ – ufk

+0

所述,非常感謝您的回答。由於某種原因,我的證書似乎不完整的SSL驗證。我提出了一個新的問題。如果可能,請看看http://stackoverflow.com/questions/38170775/golang-with-http-ssl-godaddys-certificate-this-servers-certificate-chain-is再次感謝! – ufk