golangでhttpsを設定する方法
Apr 06, 2023 am 08:59 AMインターネットの発展に伴い、HTTPS は最新の Web アプリケーションの重要な部分になりました。データの安全な送信を保証するだけでなく、Web ページのセキュリティと信頼性も向上します。これは、Web アプリケーションにとって非常に重要です。 Golang は近年非常に人気のあるプログラミング言語であり、その内蔵ネットワーク ライブラリは HTTPS を簡単にサポートできます。
それでは、Golang で HTTPS を設定するにはどうすればよいでしょうか?
1. 証明書とキーの生成
まず、SSL 証明書とキー ファイルを生成する必要があります。 OpenSSL ツールを使用して生成できます。具体的なコマンドは次のとおりです:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
このコマンドは、RSA 暗号化タイプの証明書と、365 日間有効な秘密キー ファイル key.pem および cert.pem を生成します。
2. コードの記述
Golang では、TLS (Transport Layer Security) を使用した HTTPS のセットアップは非常に簡単です。以下は、サーバーとクライアントを含むサンプル コードです。
package main import ( "fmt" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, HTTPS!") } func main() { http.HandleFunc("/", handler) server := &http.Server{ Addr: ":8080", } err := server.ListenAndServeTLS("cert.pem", "key.pem") if err != nil { log.Fatal("ListenAndServeTLS: ", err) } }
このサンプル コードでは、まず HTTP リクエストを処理する HTTP プロセッサを定義します。次に、HTTP サーバーとそのリスニング アドレスを定義します。 ListenAndServeTLS() メソッドの最初のパラメータを証明書ファイルのパスに設定し、2 番目のパラメータをキー ファイルのパスに設定することで、HTTP 接続ではなく HTTPS 接続をリッスンするように Golang に指示します。
クライアント接続の場合、https://:
package main import ( "fmt" "log" "net/http" ) func main() { response, err := http.Get("https://localhost:8080/") if err != nil { log.Fatal("Get: ", err) } defer response.Body.Close() body, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal("ReadAll: ", err) } fmt.Println(string(body)) }
- 証明書とキーを生成するときは、次の点に注意する必要があります。証明書のドメイン名がサーバー (またはクライアント) のドメイン名と一致していることを確認するには、SSL/TLS ハンドシェイクが失敗します。
- 自己署名証明書を使用する場合、クライアントは証明書をインストールし、信頼リストに追加します。そうしないと、クライアントは信頼できない証明書エラーを受け取ります。
- データ セキュリティをより適切に保護するには、最新の TLS プロトコル バージョン (TLS 1.3 など) を使用し、古いセキュリティ プロトコル バージョン (SSLv3 など) を無効にすることをお勧めします。
以上がgolangでhttpsを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
