Java/Android客户端服务器应用程序。关于安全性的问题:数字证书和CA
我目前正在为Android thay开发一个应用程序,它允许用户在服务器上备份数据,我也在用Java开发服务器。我已经基本完成了文件传输、注册和登录等功能的开发(mysql数据库保存用户和密码记录)等等。在尝试实现安全特性时,我的开发陷于停顿。我想使用非对称加密技术进行身份验证,使用对称加密技术加密客户端和服务器之间的通信。这就是交易: 客户端和服务器之间的通信将使用AES进行。这依赖于双方之间的预共享密钥。此预共享密钥将在每次启动会话时在客户端生成,并将发送到服务器,使用服务器公钥进行加密。这样,只有拥有私钥的服务器才能解密预共享密钥并读取通信。我有点困惑的是服务器公钥的共享。现在我知道最好的方法是使用包含服务器公钥的数字证书。我也知道这个证书应该来自可信的CA 我的问题是,如何为我的服务器获取数字证书?我的android应用程序会从服务器或CA请求此证书吗?我最初的想法是,它必须从CA接收此证书,就好像它从服务器接收此证书一样,它可能具有欺诈性。这方面的过程和正确方法是什么?在我读到的任何地方,它都只讨论从客户端到Web服务器的https连接。我正在用java编写一个服务器,它将通过套接字与我的android应用程序进行通信。如何创建、接收和验证与受信任CA相关的证书Java/Android客户端服务器应用程序。关于安全性的问题:数字证书和CA,java,android,security,x509,digital-certificate,Java,Android,Security,X509,Digital Certificate,我目前正在为Android thay开发一个应用程序,它允许用户在服务器上备份数据,我也在用Java开发服务器。我已经基本完成了文件传输、注册和登录等功能的开发(mysql数据库保存用户和密码记录)等等。在尝试实现安全特性时,我的开发陷于停顿。我想使用非对称加密技术进行身份验证,使用对称加密技术加密客户端和服务器之间的通信。这就是交易: 客户端和服务器之间的通信将使用AES进行。这依赖于双方之间的预共享密钥。此预共享密钥将在每次启动会话时在客户端生成,并将发送到服务器,使用服务器公钥进行加密。这
谢谢您有什么特别的理由重新发明TLS吗?TLS不要求您购买证书(您可以使用自己的证书),甚至允许您直接使用预共享密钥。出于教育目的,我不希望使用TLS。使用由您制作的证书不会因为未经可信CA验证而不安全吗?出于教育目的,研究TLS规范是合理的-这肯定会更安全。至于证书,“可信CA”受验证证书的特定软件的信任。您可以将自己的服务器证书添加到受信任证书列表中。也就是说,这是一个信任问题,而不是CAs本身。