这个简短的例子中我们将看到如何去配置Tomcat来支持SSL协议,以及HTTPS连接。
为服务器生成一个自签名的证书
要想让SSL能够工作就必须让服务器能向客户端证明自己的身份。要实现这个服务器就需要有一个证书。当然了,在互联网环境中部署一台安全的WEB服务器的话,你需要一个知名的可信的认证中心,比如Verisign。不过在这个例子中我们准备使用的是一个自签名的证书。也就是说,这个证书是由发布者自己进行签名的。正如你将看到的那样,浏览器(客户端)会识别出这个,让我们来判断是否信任这台服务器。
要创建一个自签名的证书非常简单。有许多执行这种操作的工具可选,比如openssl。在我们的例子中使用的是keytool,它是一个Java JDK发布时自带的一个命令行工具。它就在你的JDK_HOME/bin目录中。
这就是我用来生成一个自签名证书所使用的命令:
F:\nikos7\Desktop>keytool -genkey -alias javacodegeeks -keyalg RSA -keystore F:\nikos7\Desktop\keystore
下面是终端的截图:
下面是可选择的选项:
-genkey: 用来生成一个公钥和私钥对。公钥会存储在服务端的证书中。私钥则必须是服务端私有的。
-alias: 定义密钥库的一个唯一的别名。
-keyalg: 定义生成密钥对所使用的算法。在这里我们用的是RSA。
-keystore: 定义存储证书和密钥对的路径。
密钥库是密钥和证书的一个安全的存储设施。里面的每一个密钥都只能通过一个唯一的别名和一个密码来进行访问。
配置Tomcat来使用SSL
现在我们需要配置Tomcat来接收HTTPS的连接。我们需要告诉服务器来使用我们的密钥库来给客户端提供一个有效的证书。
你需要进入到CATALINA_BASE/conf目录中并编辑在那找到的那个server.xml文件。把下面的XML代码粘贴到里面:
server.xml;
...
<Connector port="8444" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="F:\nikos7\Desktop\keystore"
keystorePass="1234567" />...
这会定义一个新的Tomcat Connector。Connector是Tomcat的一个模块,它使用服务器可以接收请求,并将它们传递给所请求的WEB应用,然后将响应及动态内容回传回外部世界。要定义一个Connector你需要指定它所监听的端口,所接收的协议以及其它一些参数,比如最大的线程数等等。在这里我们还打开了SSL标记,并指定了我们的密钥库所在的位置及密码。最后,你需要重启一下Tomcat。
现在,当你在浏览器中输入这个URL的时候:
https://localhost:8444/
你会收到一个警告请求,它会提示你正在访问一个未授信的WEB站点。如果你接受了这个风险并继续的话,你会在你的浏览器中看到类似下面的一个界面:
注意URL栏中那个红色的HTTPS的标记。这意味着我们的浏览器并不信任这个站点,因为服务器提供的这个签名的证书它在认证中心无法通过校验。
这就是如何配置Tomcat支持SSL或者HTTPS的一个例子。
原创文章转载请注明出处:如何配置Tomcat支持SSL或HTTPS
===========================================
欢迎关注微信公众号:java_diaosi
屌丝Java程序员
有更多java技术文章分享。