0

我正在从事与网络安全相关的学术项目。我需要在客户端(浏览器)和服务器端 jsp/servlet 之间创建安全连接。在我的示例应用程序中,我有一个简单的 html 表单来捕获用户的 USERNAME 和 PASSWORD,然后将这些详细信息发送到服务器端 jsp/servlet 以检查登录帐户是否存在。现在,为了保护 HTML 表单数据,我需要在客户端浏览器上加密数据,然后再将其发送到服务器。我不必使用 java 脚本进行客户端加密。我被要求使用证书实现安全连接。

就我在安全方面的知识而言,我需要创建一些证书,然后将其发送给客户端,以便客户端可以将其用于与安全相关的功能。

我坚持以下查询:

  1. 如何在 java 中创建证书(我需要任何第三方工具,或者是否有任何 java API 来创建证书)。

  2. 当客户端首先从服务器请求应用程序时,我应该如何将证书发送给客户端。有没有类似的东西:

    out.println(certificate);
    

    这样当用户使用服务器的 URL 请求服务器时,服务器就会返回证书。

  3. 如何在客户端使用证书进行加密(是否有任何 html 标签,如果我们将存储在客户端机器上的证书路径提供给该标签,那么该标签会自动加密 HTML 表单数据。)

对于上述查询的任何帮助,我将非常感谢。

4

1 回答 1

0

最后我得到了解决方案。处理上述情况需要以下步骤:

  1. 我们需要在我们正在使用的 Web 服务器中激活 SSL(在我的例子中是 tomcat 7)。

  2. 我们需要创建一个密钥库。KeyStore 是存储生成的密钥的地方。使用以下命令生成密钥库:

    C:\jdk_7\bin> keytool -genkey -keyalg RSA -alias <alias-name> -keystore <location-of-keystore> -validity 999 -keysize 2048
    
  3. 之后,我们需要对位于“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" />
    

    这里的“密码”是生成密钥库时输入的密码。

  4. 现在只需使用以下 URL 访问应用程序。

    https://localhost:8443/application_name
    

    之后,浏览器会自动要求用户安装证书。

这个解决方案对我有用。

于 2012-07-17T10:09:48.883 回答