2017-10-28 94 views
0

我在閱讀https://www.kaihag.com/https-and-go/並從Comodo購買了SSL證書,他們通過電子郵件發送給我一個.zip文件。所有的文件我迄今這個樣子如何在golang web服務器上設置HTTPS?

csr.pem 
private-key.pem 
website.com.crt 
website.com.ca-bundle 
website.com.zip 

以上網站要我來連接3個.pem文件,我沒有。順便提一下,.pem文件需要連接的原因是什麼?使用上述未被修改的文件,https如何在golang web服務器上設置?

回答

2

使用https://golang.org/pkg/net/http/#ListenAndServeTLS

http.HandleFunc("/", handler) 
log.Printf("About to listen on 10443. Go to https://127.0.0.1:10443/") 
err := http.ListenAndServeTLS(":10443", "cert.pem", "key.pem", nil) 
log.Fatal(err) 

這是不是一個真正的去的問題,但是中間證書是必需的,因爲電腦只存儲根證書。通過連接它們,您可以將它們全部放入一個文件中,以便瀏覽器獲得所有證書 - 這是必需的步驟,否則您的服務器將在某些設備上失敗。您的證書提供商將爲此提供說明。爲了去你需要一個證書文件和一個私鑰文件。

https://kb.wisc.edu/page.php?id=18923

下面是COMODO的組合證書一些指令(沒關係使用哪個服務器,該過程是相同的):

https://support.comodo.com/index.php?/Knowledgebase/Article/View/1091/37/certificate-installation--nginx

0

你需要http.ListenAndServeTLS

package main 

import (
    // "fmt" 
    // "io" 
    "net/http" 
    "log" 
) 

func HelloServer(w http.ResponseWriter, req *http.Request) { 
    w.Header().Set("Content-Type", "text/plain") 
    w.Write([]byte("This is an example server.\n")) 
    // fmt.Fprintf(w, "This is an example server.\n") 
    // io.WriteString(w, "This is an example server.\n") 
} 

func main() { 
http.HandleFunc("/hello", HelloServer) 
    err := http.ListenAndServeTLS(":443", "server.crt", "server.key", nil) 
    if err != nil { 
     log.Fatal("ListenAndServe: ", err) 
    } 
} 

這裏有一個片段:https://gist.github.com/denji/12b3a568f092ab951456

+0

是的,但IIRC不server.crt必須通過連接文件一起創建?我可能會記住錯誤 – irregular

+0

如果我得到了這些是發行人的證書。包括這些證書和創建捆綁包是好的,因爲如果沒有訪問完整的鏈,瀏覽器(以前版本的Firefox)不接受您的正確證書。你可以從Chrome瀏覽器開始調試所有的東西。然後將所有證書加入到捆綁包中並進行部署 –

相關問題