这个简短的例子中咱们将看到如何去配置Tomcat来支持SSL协议,以及HTTPS链接。html
为服务器生成一个自签名的证书java
要想让SSL可以工做就必须让服务器能向客户端证实本身的身份。要实现这个服务器就须要有一个证书。固然了,在互联网环境中部署一台安全的WEB服务器的话,你须要一个知名的可信的认证中心,好比Verisign。不过在这个例子中咱们准备使用的是一个自签名的证书。也就是说,这个证书是由发布者本身进行签名的。正如你将看到的那样,浏览器(客户端)会识别出这个,让咱们来判断是否信任这台服务器。程序员
要建立一个自签名的证书很是简单。有许多执行这种操做的工具可选,好比openssl。在咱们的例子中使用的是keytool,它是一个Java JDK发布时自带的一个命令行工具。它就在你的JDK_HOME/bin目录中。算法
这就是我用来生成一个自签名证书所使用的命令:浏览器
F:\nikos7\Desktop>keytool -genkey -alias javacodegeeks -keyalg RSA -keystore F:\nikos7\Desktop\keystore
下面是终端的截图:tomcat
下面是可选择的选项:安全
-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技术文章分享。