我正在开展与网络安全相关的学术项目。我需要在客户端(浏览器)和服务器端jsp / servlet之间建立安全连接。在我的示例应用程序中,我有一个简单的html表单从用户捕获USERNAME和PASSWORD,然后将这些详细信息发送到serverside jsp / servlet以检查登录帐户是否存在。现在为了保护HTML表单数据,我需要在将数据发送到服务器之前在客户端浏览器中加密数据。我不必使用java脚本进行客户端加密。我被要求使用证书来实现安全连接。
就我的安全知识而言,我需要创建一些证书,然后将其发送给客户端,以便客户端可以将其用于安全相关的功能。
我坚持以下查询:
如何在java中创建证书(我是否需要任何第三方工具,或者是否有任何Java API来创建证书)。
当客户端首次从服务器请求应用程序时,我应该如何将证书发送到客户端。是否有类似的东西:
out.println(certificate);
当用户使用服务器的URL请求服务器时,服务器返回证书。
如何在客户端使用证书进行加密(是否有任何html标记,如果我们将客户端计算机上存储的证书路径提供给该标记,则该标记会自动加密HTML表单数据。)
我非常感谢上述提问的任何帮助。
答案 0 :(得分:0)
最后我得到了解决方案。需要以下步骤来处理上述情况:
我们需要在我们正在使用的Web服务器中激活SSL(在我的案例中是tomcat 7)。
我们需要创建一个密钥库。 KeyStore是存储生成的密钥的位置。 使用以下命令生成密钥库:
C:\jdk_7\bin> keytool -genkey -keyalg RSA -alias <alias-name> -keystore <location-of-keystore> -validity 999 -keysize 2048
之后我们需要对位于“Tomcal安装目录”内的“server.xml”进行以下更改。将以下代码添加到server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="E:\keystore\keystore.jks"
keystorePass="password" />
此处'密码'是生成密钥库时输入的密码。
现在只需使用以下网址访问该应用程序。
https://localhost:8443/application_name
此后,浏览器将自动要求用户安装证书。
这个解决方案对我有用。