2016-07-03 14 views
1

GoLang HttpsサーバーでgodaddyのSSL証明書を使用する方法が不思議です。私はまだsf_bundle-g2-g1.crtを持ってGoLangでgodaddy 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>) 

現在、私は次のコードを使用しています。どのように証明書のチェーンに追加しますか? Voncの答え@

更新

は、私はちょうど1つの最後に欠けている、本当に便利です。 ReadTimeoutとWriteTimeoutのパラメータを変更するためにhttp.Serverのインスタンスを使用しています。どのように私は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

full example hereは、file-server-goセクションに表示されます。証明書の
チェーンは、あなたの場合は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")にロードする必要があります。

私はその後、(実際の時間とtime.Durationを置き換え)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 
} 

パラメータ

を変更するためにhttp.Serverインスタンスを使用しています:

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

注:ListenAndServeTLS常にret non-nilエラーを返します。

+0

ありがとうございます!ただ1つの質問、更新されたメインポスト – ufk

+0

ありがとうございます。私はhttp://www.bite-code.com/2015/06/25/tls-mutual-auth-in-golang/に記載されているように、そのtls.ConfigオブジェクトをTLSConfigパラメータとして使用できます。 – ufk

+0

。何らかの理由で私の証明書がSSL検証者によって不完全なように見えます。私はそれについて新しい質問を開いた。可能であれば、http://stackoverflow.com/questions/38170775/golang-with-http-ssl-godaddys-certificate-this-servers-certificate-chain-isもう一度お試しください! – ufk