Tomcat如何配置Https访问方式

前提条件:已经下载并安装配置好Tomcat,访问http://localhost:8080的时候会出现tomcat的界面。

第一步:配置hosts文件

添加一行127.0.0.1 codecrazy.cn。这一步不是必要的,只是为了访问的时候效果更好(逼格更高)一点。此时就可以通过http://codecrazy.cn:8080进行访问了。

第二步:生成证书

这里采用JDK自带的keytool工具来生成。

这里写图片描述

如上图所示,输入红框中的命令:

E:\Java\bin>keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -keypass changeit -validity 365 -keystore e:\sms\tomcat.keystore -storepass changeit

之后需要填写几个问题,最后一个问题填入‘y’并回车。

执行上述命令之后会在e:\sms下面生成一个tomcat.keystore文件,-keystore选项指定存储位置和文件名。如果不指定的话会默认在用户的主目录下生成一个“.keystore”文件,-storepass指定存储密码。 -keypass指定的库密码,这2个密码不需要一样。
具体keytool的用法请参见:http://www.micmiu.com/lang/java/keytool-start-guide/

注意事项:“您的名字与姓氏是什么?”这个问题我写的是“codecrazy.cn”,实践表明这个地方要填你访问网站时的域名。我这里填的是codecrazy.cn。如果没配置hosts文件,而是通过localhost来访问网站,那就填localhost。剩下的几个问题貌似随便填也没什么关系。

第三步:生成证书之后再配置tomcat的conf目录下的server.xml文件

<!-- Define a SSL HTTP/1.1 Connector on port 8443
         This connector uses the BIO implementation that requires the JSSE
         style configuration. When using the APR/native implementation, the
         OpenSSL style configuration is required as described in the APR/native
         documentation -->
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="E:\sms\tomcat.keystore" keystorePass="changeit"
               clientAuth="false" sslProtocol="TLS" />

port=8443这个Connector的配置初始情况下是注释掉的,去掉注释,并添加上述的一些属性配置。其中keystoreFile填的就是之前用keytool生成的tomcat.keystore文件的路径,keystorePass就是之前keytool命令中-storepass选项中指定的值。
对于protocol有多种配置方法,如是否启用apr的方式,不同的方式有不同的配置,具体可以参考官方文档http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

这里我采用Http11Protocol,它采用的是BIO的方式处理网络连接请求。至于bio,nio,apr三种方式的区别是什么不在本文讨论之列。

然后启动tomcat,在启动过程输出的信息中可以看到多了一个监听在8443端口上的连接处理器,如下图所示:

这里写图片描述

在中间那一行出现了[“http-bio-8443”]这就是用来处理https安全连接的处理器的名字。8443代表的是在Connector中port指定的值,可以配置成其他的,生产环境中显然是配置成默认的443端口。”http-bio-8443”中间的“bio”是因为我们上面配置的是org.apache.coyote.http11.Http11Protocol,它采用的就是bio的方式来处理网络连接请求。(最前面的“http”感觉输出“https”比较合适一点)

此时通过https://codecrazy.cn:8443访问tomcat还是没有建立安全的连接,因为浏览器中并没有安装证书,https的原理以及如何通过CA认证等不在本文讨论之列。本文采用的是一种叫做自签名证书的方法。

第四步:通过keytool工具来从keystore中导出证书来提供给浏览器使用

这里写图片描述

-keysotre选项指定的就是之前用keytool生成的keystore文件的路径, -file选项指定的就是导出证书的文件路径,具体如何使用请参见上文提供的使用keytool工具的链接。命令执行完之后就会在e:\sms\目录下面生成一个tomcat.crt的文件。

第五步:将该文件导入到浏览器中

不同的浏览器会有略有差别。对于chrome浏览器来说,在地址栏输入chrome://settings/进入设置界面,再点击最下面的“显示高级设置”然后往下找到
这里写图片描述

点击“管理证书”,*切换到如下图红框所示“受信任的根证书颁发机构”* tab页

这里写图片描述

点击导入,再点击下一步,选择“浏览”找到我们上面生成的tomcat.crt文件,然后一路“下一步”,最后完成。
至此大功告成。输入https://codecrazy.cn:8443即可建立https连接。效果如下所示:

这里写图片描述

地址栏https前面不再是红叉了,而是变成了绿色的,说明已经建立了安全连接。整个过程中有任何疑问,欢迎留言讨论。

以上观点均是“实践表明”,鉴于实践的广度和深度也许不足,不代表论述的正确性和权威性。如有不当之处,还望指正,谢谢!

您的关注是我不断创作的动力源泉!期待认识更多的朋友,一起交流Java相关技术栈,共同进步!阅读更多技术文章,可关注我的公众号:codecrazy4j
这里写图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值