https并不是一种新的应用层协议,只是在http和tcp通信时,先由http和ssl通信,再由ssl和tcp通信。ssl本身是独立于http的协议。
想要使用https需要有SSL证书,本文以jks(java keystore)为例,使用jdk的keytool(bin目录)工具生成keystore,在Tomcat中配置https。
keytool -genkeypair -alias tomcat9 -keypass tomcat9
-keyalg RSA -keystore ~/tomcat9.keystore
有了keystore就可以在tomcat中配置了,这里使用的是tomcat9,通常这种开源的中间件对于使用者来说,主战场都在配置文件。回到tomcat9的配置文件/conf/server.xml,编辑Connector 8443。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="tomcat9.com">
<SSLHostConfig hostName="tomcat9.com">
<Certificate certificateKeystoreFile="/root/tomcat9.keystore"
certificateKeystorePassword="tomcat9" type="RSA" />
</SSLHostConfig>
</Connector>
启动tomcat9,请求url:https://xx.xx.xx.xx:8443,可以正常访问:
注意:tomcat8.5之后,在Connector元素中配置相关SSL属性已被废弃,应该使用SSLHostConfig and Certificate;端口8443可以直接改为https默认的443端口;certificateKeystoreFile需要设置自己的keystore文件路径。
觉得有用,点个关注: