之前写过一种使用nginx安装ssl证书,然后端口映射到tomcat的方式。
链接Nginx+tomcat安装ssl证书
突然看到一篇博客 Tomcat9使用免费的Https证书加密网站的方法
在tomcat9成功安装ssl证书。
注意
我是从腾讯云购买的服务器跟域名跟证书。
服务器是linux服务器。ubuntu18.04(注意,此方法跟服务器类型无关)
域名备案后,可以免费申请ssl证书,在腾讯云控制台找一下即可。申请成功后可以进行证书的下载(是一个压缩包,里面包含四种服务器类型的证书,其中tomcat目录下包含一个jks证书和一个密码txt文件)
开始
- 从tomcat官网下载tomcat的压缩包,上传到云服务器的某个位置。解压
(例如位置在 /home/ubuntu/apache-tomcat-9.0.31) - 将证书压缩包里的tomcat目录中的jks文件上传到你服务器的某个位置。
(例如 /home/ubuntu/apache-tomcat-9.0.31/下) - 编辑tomcat的server.xml(在tomcat目录下的conf中)。添加如下代码
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/home/ubuntu/apache-tomcat-9.0.31/你的域名.jks"
keystorePass="那个密码文件里的密码"
clientAuth="false" sslProtocol="TLS" />
保存退出即可。
4. 重启tomcat,在tomcat的bin目录下,执行
./shutdown.sh
./startup.sh
5.测试
在浏览器输入https://你的域名:8443即可访问。
注:你可以在server.xml中将8443改为443,但由于1024以下的端口号是特殊端口 --------linux对于非root权限用户不能使用1024以下的端口-----,需要使用root权限来操作,包括tomcat的启动与关闭,包括配置文件的修改。
6.另外可以转发Http请求到Https
这一步非常简单,编辑apache-tomcat-9.0.31/conf/web.xml文件,在其中添加如下代码:
<!-- 增加所有网址自动跳转https -->
<security-constraint>
<web-resource-collection>
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
此时浏览器直接输入 你的域名:8443即可访问。
7.如果不能成功,请检查云服务器的安全组是否开放相应端口。
(腾讯云服务器需要在控制台的安全组查看)
另外,检查云服务器的tomcat服务是否开启。
以上有任何问题在下方留言,或者联系qq:1021752458