tomcat8.5、9.0配置ssl证书(阿里免费证书)

环境说明:

tomcat8.5、9.0
ssl证书为pfx格式
操作系统为windows10和ubuntu

配置tomcat

这里以9.0为例。一开始我是在服务器上配的8.5,问题很多,而且不知道怎么看异常信息。但是后来好了之后才清楚。这里8.5,9.0的配置可以一样,8.5一下版本的配置网上也很多,我也借鉴很多,主要碰到的问题是各种细节,不是配置本身。

1.先把证书解压放到toumcat的conf文件夹下

例如:(linux也是一样的位置)
在这里插入图片描述

2.配置conf中的server.xml文件

在tomcat下的conf文件夹中修改server.xml文件,找到注释掉的<Connector>标签,解开注释,配置一下。

<!--这是上面一点的端口配置和ssl重定向请求,maxHttpHeaderSize参数是接受长度的设置,可以不设置-->
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" 
			   maxHttpHeaderSize="8192"/>
			   
<!--这里端口与上面保持相同-->
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/cert/xxx.pfx"  <!--证书位置-->
                        certificateKeystoreType="PKCS12"                                                         
						certificateKeystorePassword="xxx"    <!--证书密码-->          
                        type="RSA" />
        </SSLHostConfig>
    </Connector>

这里说明一下,证书的另一个格式jks,配置相差不大,可以参照这个https://blog.csdn.net/u010904188/article/details/80966515,我当时看到的很多都是这个,这里不说了,其他格式的证书就不了解。

3.重启tomcat

如果Linux配置麻烦,可以现在windows上配好把文件拉到linux上。在bin文件下双击startup.bat启动,记得看控制台有没有抛异常,这个很重要,抛异常就根据异常一步一步处理解决。
正常启动后可以在网页上浏览,输入 https://loccalhost/ 进行查看,出现apache的主页就没问题了,我方张我的,我是浏览的测试web项目
安全问题,不用管,因为只是测试。
在这里插入图片描述
继续访问,这样就说明成功了。这是事先写好的json数据,已经能用https访问了。http也是可以的。
在这里插入图片描述

4.在Linux服务器上配置

把server.xml、证书压缩包传到服务器上。
证书解压相同位置,server文件替换掉原来的问=那个,注意两个操作系统上的tomcat版本相同。
这里说一下,我设置的是tomcat启动端口是80,Linux上1024以下端口启动服务都要用sudo来启动,不然会启动报错。

先尝试启动一次。启动成没成功,报异常没都不晓得,终端不会现实的。你可用netstat -tln来查看你的tomcat端口启动了没?我启动时反正没成功,没找到80端口,倒是看到了8009,那就肯定是出异常了。在tomcat目录下的logs目录下中查看catalina.out 文件,看看日志文件报的什么异常,我这里报了个这个异常:
15-May-2019 19:54:07.896 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
15-May-2019 19:54:08.119 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-80"]
15-May-2019 19:54:08.150 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
15-May-2019 19:54:08.155 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-80]]
 org.apache.catalina.LifecycleException: Protocol handler initialization failed
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:976)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
	at org.apache.catalina.core.StandardService.initInternal(StandardService.java:533)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
	at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:883)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:646)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:669)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:306)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:491)
Caused by: java.net.SocketException: Permission denied
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:236)
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210)
	at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1067)
	at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1080)
	at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:550)
	at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:973)
	... 13 more

15-May-2019 19:54:08.157 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["https-jsse-nio-443"]
15-May-2019 19:54:08.157 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
15-May-2019 19:54:08.157 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-443]]
 org.apache.catalina.LifecycleException: Protocol handler initialization failed
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:976)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
	at org.apache.catalina.core.StandardService.initInternal(StandardService.java:533)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
	at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:883)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:646)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:669)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:306)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:491)
Caused by: java.net.SocketException: Permission denied
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:236)
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210)
	at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1067)
	at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1080)
	at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:550)
	at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:973)
	... 13 more
因为我没用sudo启动,用sudo也报错误,没配jdk路径,在bin下catalina.sh文件中加入 export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_91就可以了。之后启动tomcat,这次80端口显示了,看了下日志文件,也没报异常,在浏览器上看下。在这里插入图片描述
这次没有出现安全性问题,因为用域名访问的,配置证书也是阿里申请的,所以没有报安全问题。
5.最后的一点小体会

要去看日志文件,去看报的异常,这样处理起来更快,最好现在Windows上先配好,这样用界面操作更方便新手去找错误。
顺便几下自己用到的命令:
查看tomcat是否启动,以及pid号:ps -ef | grep java
查看所有使用中端口情况:netstat -tln
查看80端口信息:netstat -ntulp |grep 80

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值