🔐

gRPC 自分用 めも

2024/09/04に公開

自分用です

メモ(ブクマ)っとかないと迷子になるやつ

TLS

- TODO 時間があったら各ケースをちゃんと調べる
+ 雑   https じゃない場合は insecure() しとけばおけ
  • Golang
    • CloudRun とかの場合
      • 公式
      sysRoots, err := x509.SystemCertPool()
      if err != nil {
      	return nil, err
      }
      creds := credentials.NewTLS(&tls.Config{RootCAs: sysRoots})
      return ggrpc.WithTransportCredentials(creds)
      
      • 無視する(Insecure)
      config := &tls.Config{
          InsecureSkipVerify: true,
      }
      opts := []grpc.DialOption{
          grpc.WithTransportCredential(credentials.NewTls(config)),
      }    
      
    • 指定する場合 (自己証明書な感じ)
      • 1個1個やってくぅ
      caPem, err := os.ReadFile("cert/ca-cert.pem")
      // do something on error
      
      certPool := x509.NewCertPool()
      if !certPool.AppendCertsFromPEM(caPem) {
          // do error handling
      }
      
      config := &tls.Config{RootCAs: certPool, ServerName: "overrider name"}
      opts := []grpc.DialOption{
          grpc.WithTransportCredential(credentials.NewTls(config)),
      }
      
      • CertPoolから作る
      grpc.WithTransportCredential(
          credentials.NewClientTLSFromCert(certPool, "overrider name")
      )
      
      • ファイルから作る
      grpc.WithTransportCredential(
          credentials.NewClientTLSFromFile("file path", "overrider name")
      )
      
    • Channel
    conn, err := session.NewGRPCConn("server addr", opts...)
    
  • Python
    • CloudRun とかの場合
    ch = grpc.secure_channel("server addr", grpc.ssl_channel_credentials())
    
    • 指定する場合
    # 引数を指定する
    grpc.ssl_channel_credentials( 
       root_certificates=None, private_key=None,
  • Typescript
    • TODO

Discussion