说明
之前写了一篇文章,Tomcat配置公网可访问,默认外网可以访问http端口。这篇同时实现外网可以同时通过http和https来访问。
先说一下几个关键点:
1. 外网访问本地主机,需要设置路由器,在路由转发功能里,把发送到该路由器指定端口的数据转发到内外的指定IP和端口的主机上。
2. 在上面的基础上,http默认端口80,https默认端口443。也就是把访问路由器的80端口和443端口的数据映射到指定IP和端口。
3. https 主要比http多了ssl认证,也就是需要一个证书。在java环境下可以通过keytool来实现证书。
环境
java、可以设置路由器、tomcat
步骤
1. 路由器设置端口转发
将访问路由器端口80和443的数据分别映射到IP加不同端口的数据。比如我的设置如下:
2. 生成签名证书:
假设你已经把keytool.exe添加到环境变量了。路径:Java\jdkxxx_xx\bin
1) 生成jks(java key store),一种存储秘钥(公钥或者私钥)的容器,出来的选项随便写。
keytool -genkey -alias lq_server -keyalg RSA -keystore lq_server.jks -validity 3600 -storepass 123456
2) 用.jks签发证书
keytool -export -alias lq_server -file lq_server.cer -keystore lq_server.jks -storepass 123456
3. 配置tomcat配置文件
我的路径:C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf\server.xml
<Connector
port="62224"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
<!-- HTTPS -->
<Connector
SSLEnabled="true"
acceptCount="100"
clientAuth="false"
disableUploadTimeout="true"
enableLookups="true"
keystoreFile="D:\test_keytool\lq_server.jks"
keystorePass="123456"
maxSpareThreads="75"
maxThreads="200"
minSpareThreads="5"
port="62223"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https"
secure="true"
sslProtocol="TLS"
/>
4. 启动tomcat
之后便可以可通过http://公网IP 和 https://公网IP 访问。
参考资料: