Golang を使用して HTTPS リクエストのサーバー証明書を検証する
HTTPS Web サイトまたはサービスにアクセスするとき、ローカルの信頼が確立されている場合、アプリケーションで SSL 証明書エラーが発生する可能性があります。ストアには、サーバーの証明書を発行した認証局 (CA) は含まれません。証明書の検証を無視せずに安全な HTTPS 接続を確立したい場合、この記事では Go の HTTP クライアント ライブラリを使用した解決策を説明します。
証明書の検証を無視して証明書のチェックを無効にするには、次のコード スニペットを使用できます。
tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr}
ただし、このアプローチはセキュリティ リスクを引き起こす可能性があるため、運用環境では推奨されません。
サーバーの検証証明書
サーバー証明書を検証するには、CA 証明書をトランスポート構成に追加する必要があります。以下は例です。
package main import ( "crypto/tls" "io/ioutil" "log" "net/http" "crypto/x509" ) func main() { caCert, err := ioutil.ReadFile("rootCA.crt") if err != nil { log.Fatal(err) } caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{ RootCAs: caCertPool, }, }, } _, err := client.Get("https://secure.domain.com") if err != nil { panic(err) } }
サーバーの証明書の生成
CA 証明書をお持ちでない場合は、サーバーの証明書と一緒に CA 証明書を生成できます。次のコマンドを使用してサーバーにアクセスします:
openssl genrsa -out rootCA.key 4096 openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
openssl genrsa -out secure.domain.com.key 2048 openssl req -new -key secure.domain.com.key -out secure.domain.com.csr # In answer to question `Common Name (e.g. server FQDN or YOUR name) []:` you should set `secure.domain.com` (your real domain name) openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt
これらの手順を完了すると、適切な証明書が作成されます。 Go でサーバー証明書を検証する構成された HTTP クライアント。これにより、指定されたサーバーとの安全な HTTPS 通信が保証されます。
以上がGo を使用して HTTPS リクエストのサーバー証明書を検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。