私はGoを使用してアプリケーションを作成していますが、ListenAndServeTLS
関数を使用してhttpsサーバーを起動しようとしています。ここに私のコードは次のとおりです。ListenAndServeTLSへの文字列としての証明書とキーの受け渡し
func StartServer() {
defer config.CapturePanic()
c := config.GetInstance()
serverAddress := fmt.Sprintf(":%s", c.GetConfig().ServerPort)
server := http.Server{Addr: serverAddress}
log.Info("Starting local server")
http.HandleFunc("/", login.Handler)
http.HandleFunc("/login", login.Handler)
http.HandleFunc("/settings", settings.Handler)
//cert, _ := data.Asset("my-cert.pem")
//key, _ := data.Asset("my-key.pem")
err := server.ListenAndServeTLS("my-cert.crt", "my-cert.key")
if err != nil {
log.WithError(err).Fatal("Error stopping local server")
}
}
事は、私は私の実行可能ファイル内に自分の証明書とキーを埋め込み、その後、文字列またはバイト配列としてserver.ListeAndServeTLS
関数に渡すしたいということです。しかし、この関数はこれらの型の引数をとらない。これを行う別の方法がありますか?
注:プライベートキーをクライアントアプリケーションに埋め込むのは悪い習慣ですが、私がここでやろうとしているのは、https://localhost:8080
としてホストされる設定Webページを作成することです。
こんにちは、ありがとう。私のコードをあなたの提案に変更しましたが、 'tls.Loadx509KeyPair()'関数は証明書ファイルへのパスと、この情報を含むバイト配列ではなくキーファイルへのパスも期待しています。あなたのコードを実行したとき、私はこのエラーを受け取りました: 'open:システムは指定されたファイルを見つけることができません。 ' – Felipe
良い点。私は 'tls.X509KeyPair'を使う答えを編集しました。将来、[Loadx509KeyPair](https://golang.org/src/crypto/tls/tls.go?s=5407:5474#L168)のソースを見て、それが何をしているのかを見ることができます。 – Marc
こんにちは、私は 'tls.X509KeyPair'を使うように変更しました。助けてくれてありがとう! – Felipe