2016-07-03 3 views
1

GoLang Https 서버로 godaddy ssl 인증서를 사용하는 방법을 궁금합니다. 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>) 

나는 아직도 sf_bundle-g2-g1.crt 있습니다. 인증서 체인에 어떻게 추가합니까?

갱신

Vonc의 대답은 정말 도움이됩니다 @, 난 그냥 마지막 일을 누락. 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 herefile-server-go 섹션에 있습니다.
는 인증서의 체인은 귀하의 경우, ioutil.ReadFile("sf_bundle-g2-g1.crt")에서 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) 

에로드해야합니다.

err := server.ListenAndServeTLS(certFile, keyFile string) 
log.Fatal(err) 
: 나는 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 교체) 매개 변수

참고 ListenAndServeTLS 항상 ret non-nil 오류가 발생합니다.

+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