Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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
Java/Android客户端服务器应用程序。关于安全性的问题:数字证书和CA_Java_Android_Security_X509_Digital Certificate - Fatal编程技术网

Java/Android客户端服务器应用程序。关于安全性的问题:数字证书和CA

Java/Android客户端服务器应用程序。关于安全性的问题:数字证书和CA,java,android,security,x509,digital-certificate,Java,Android,Security,X509,Digital Certificate,我目前正在为Android thay开发一个应用程序,它允许用户在服务器上备份数据,我也在用Java开发服务器。我已经基本完成了文件传输、注册和登录等功能的开发(mysql数据库保存用户和密码记录)等等。在尝试实现安全特性时,我的开发陷于停顿。我想使用非对称加密技术进行身份验证,使用对称加密技术加密客户端和服务器之间的通信。这就是交易: 客户端和服务器之间的通信将使用AES进行。这依赖于双方之间的预共享密钥。此预共享密钥将在每次启动会话时在客户端生成,并将发送到服务器,使用服务器公钥进行加密。这

我目前正在为Android thay开发一个应用程序,它允许用户在服务器上备份数据,我也在用Java开发服务器。我已经基本完成了文件传输、注册和登录等功能的开发(mysql数据库保存用户和密码记录)等等。在尝试实现安全特性时,我的开发陷于停顿。我想使用非对称加密技术进行身份验证,使用对称加密技术加密客户端和服务器之间的通信。这就是交易:

客户端和服务器之间的通信将使用AES进行。这依赖于双方之间的预共享密钥。此预共享密钥将在每次启动会话时在客户端生成,并将发送到服务器,使用服务器公钥进行加密。这样,只有拥有私钥的服务器才能解密预共享密钥并读取通信。我有点困惑的是服务器公钥的共享。现在我知道最好的方法是使用包含服务器公钥的数字证书。我也知道这个证书应该来自可信的CA

我的问题是,如何为我的服务器获取数字证书?我的android应用程序会从服务器或CA请求此证书吗?我最初的想法是,它必须从CA接收此证书,就好像它从服务器接收此证书一样,它可能具有欺诈性。这方面的过程和正确方法是什么?在我读到的任何地方,它都只讨论从客户端到Web服务器的https连接。我正在用java编写一个服务器,它将通过套接字与我的android应用程序进行通信。如何创建、接收和验证与受信任CA相关的证书


谢谢

您有什么特别的理由重新发明TLS吗?TLS不要求您购买证书(您可以使用自己的证书),甚至允许您直接使用预共享密钥。出于教育目的,我不希望使用TLS。使用由您制作的证书不会因为未经可信CA验证而不安全吗?出于教育目的,研究TLS规范是合理的-这肯定会更安全。至于证书,“可信CA”受验证证书的特定软件的信任。您可以将自己的服务器证书添加到受信任证书列表中。也就是说,这是一个信任问题,而不是CAs本身。