用 Java 2 标准版本 (J2SE) 1.4 进行 Internet 安全编程(6) char keystorepass[] = "hellothere".toCharArray();char keypassWord[] = "hiagain".toCharArray();
指定了 keystore 的名字、密码和密匙密码。直接在代码中写出密码文本是个糟糕的主意,不过我们可以在运行服务器的时候在命令行指定密码。
getServer 方法中的其它 JSSE 代码:
它访问 serverkeys keystore,JSK 是 Java KeyStore (一种由 keytool 产生的 keystore)。 用 KeyManagerFactory 为 keystore 创建 X.509 密匙管理。 SSLContext 是实现 JSSE 的环境。用它来创建可以创建 SSLServerSocket 的 ServerSocketFactory。虽然我们指定使用 SSL 3.0,但是返回来的实现常常支持其它协议版本,如 TLS 1.0。旧的浏览器中更多时候使用 SSL 3.0。
注意默认情况下不需要客户端的验证。如果你想要服务器请求客户端进行验证,使用:serversocket.setNeedClientAuth(true).
现在用 HttpsServer 类做个实验:
你在浏览器中输入 https://URL 的时候,你会得到一个安全警告的弹出窗口,就像图 3 那样。这是因为 HTTP 服务器证书是自己产生的。换句话说,它由未知的 CA 创建,在你的浏览器保存的 CA 中没有找到这个 CA。有一个选项让你显示证书 (检查它是不是正确的证书以及是谁签的名) 和安装该证书、拒绝该证书或者接受该证书。
CSdn.net/develop/article/images/15963_fig3.GIF" border=0>图 3:由未知 CA 颁发的服务器证书
注意:在内部的私有系统中产生你自己的证书是个很好的主意。但在公共系统中,最好从知名的 CA 处获得证书,以避免浏览器的安全警告。