Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
颤振gRPC:android应用程序中双向TLS的最佳方法_Android_Flutter_Go_Grpc_Grpc Go - Fatal编程技术网

颤振gRPC:android应用程序中双向TLS的最佳方法

颤振gRPC:android应用程序中双向TLS的最佳方法,android,flutter,go,grpc,grpc-go,Android,Flutter,Go,Grpc,Grpc Go,我正在使用flatter构建一个android应用程序。后端服务是使用golang和gRPC作为API构建的 我想为我正在构建的应用程序实现双向TLS加密。我已经生成了一个RSA公钥和私钥对,并将私钥分配给golang gRPC端,将公钥分配给Flatter端。我不知道这是否是最好的方法,因为我直接将公钥存储在我的Flitter应用程序的assets文件夹中 对于我来说,实现双向加密而不危及我的公钥的最佳方法是什么,或者有没有其他更好的方法来实现我想要的 golang gRPC初始代码: cre

我正在使用flatter构建一个android应用程序。后端服务是使用golang和gRPC作为API构建的

我想为我正在构建的应用程序实现双向TLS加密。我已经生成了一个RSA公钥和私钥对,并将私钥分配给golang gRPC端,将公钥分配给Flatter端。我不知道这是否是最好的方法,因为我直接将公钥存储在我的Flitter应用程序的
assets
文件夹中

对于我来说,实现双向加密而不危及我的公钥的最佳方法是什么,或者有没有其他更好的方法来实现我想要的

golang gRPC初始代码:

cred, sslErr := credentials.NewServerTLSFromFile(parsedConfig.GRPCConf.CertFile, parsedConfig.GRPCConf.KeyFile)
if sslErr != nil {
    sslErr = errors.Wrap(sslErr, "[ERROR - 301]")
    return sslErr
}
opts = append(opts, grpc.Creds(cred))

opts = append(opts, grpc.UnaryInterceptor(unaryInterceptor))

grpcServer := grpc.NewServer(opts...)

TLS使用证书而不是原始密钥工作。没有“单向TLS”,它总是双向的。单向的是身份验证:如果您只需要验证服务器的身份,那么您只需要服务器端的证书(以及相关的私钥)。如果你想相互认证,你还需要客户端证书。很抱歉,我想我理解错了。正如您所指出的,我正在服务器端使用证书文件(我附带了代码供参考)。如何获取客户端证书?如果我生成自己的客户端证书并将其嵌入到资产文件夹中,可以吗?我对加密和开发基本上是新手,感谢您的回复和耐心。为什么您需要客户端证书?您不需要它来建立安全连接。如果需要验证应用程序的用户(如每个应用程序安装中的用户都有不同的身份),您需要一些动态的东西,例如要求他们登录。因此,如果我使用flay中的
credentials:ChannelCredentials.unsecure()
选项连接,是否仍然正常?如果是的话,谢谢你的澄清。请写一个答案,我会将其标记为解决方案。请尝试以下指南:。也许还可以阅读更多关于TLS的信息。您应该有一个为您的服务器公开颁发的证书。