tomcat8.5版本和tomcat8.0有了很大的区别,默认的server.xml中https的配置方式也有了变化:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" secure="true" URIEncoding="UTF-8" useBodyEncodingForURI="true">
<SSLHostConfig certificateVerification="optional">
<Certificate certificateKeystoreFile="${catalina.home}/bin/mykey.jks" certificateKeystorePassword="mypassword"/>
</SSLHostConfig>
</Connector>

然而当启动的时候,却报出了空指针错误:

02-Dec-2016 17:49:02.885 警告 [main] org.apache.tomcat.util.net.openssl.OpenSSLContext.init Error initializing SSL context
java.lang.NullPointerException
at org.apache.tomcat.util.net.openssl.OpenSSLContext.init(OpenSSLContext.java:281)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:101)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:81)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:245)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:875)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:213)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:558)
at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:65)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:968)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:549)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:875)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.startup.Catalina.load(Catalina.java:606)
at org.apache.catalina.startup.Catalina.load(Catalina.java:629)
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:311)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:494)

查源代码发现,tomcat8.5代码中要求有别名,如果没有配置,默认使用“tomcat”作为别名。显然,我们的证书别名不会是tomcat。

我们可以使用如下命令查看证书的别名:

keytool -list  -v -keystore xxxx.keystore -storepass 密码

比如:

D:\tomcat\tomcat858s\bin>keytool -list -v -keystore mykey.jks -storepass mypassword
密钥库类型: JKS
密钥库提供方: SUN 您的密钥库包含 个条目 别名:
创建日期: --
条目类型: PrivateKeyEntry
证书链长度:
证书[]:
所有者: CN=*.guyezhai.com, O=XXXXXXXXXXXXXXXXXX, L=北京市, ST=北京市, C=CN
发布者: CN=WoSign Class OV Server CA G2, O=WoSign CA Limited, C=CN
序列号: 567ab6b63782bdb9e44eba04dc27efe8
有效期开始日期: Thu Mar :: CST , 截止日期: Fri Mar :: CST
证书指纹:
MD5: ::7C:5A:4F:D8:5F:C7:D1:A2:::C5:4A:EE:A3
SHA1: F7::A7:4A::DD:B9:5F::::::C9:3E::3D:A7:3D:E2
SHA256: ::E0::7C:BD:BA::E8::::8E:4D:2A:2B:5C:A7::D0:F0:7A::B6:D7:9D:B0:D7:::BA:
签名算法名称: SHA256withRSA
版本: ...

可以看到,此证书的别名是“1”,我们就可以在server.xml中配置别名了:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" secure="true" URIEncoding="UTF-8" useBodyEncodingForURI="true">
<SSLHostConfig certificateVerification="optional">
<Certificate certificateKeystoreFile="${catalina.home}/bin/mykey.jks" certificateKeystorePassword="mypassword" certificateKeyAlias="1"/>
</SSLHostConfig>
</Connector>

添加certificateKeyAlias="1"

然后再次启动tomcat,空指针报错就消失了。

Tomcat8.5配置https启动报空指针错误的更多相关文章

  1. springboot 配置jpa启动报Error processing condition on org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration.pageableCustomizer

    springboot +gradle 配置jpa启动报Error processing condition on org.springframework.boot.autoconfigure.data ...

  2. LR录制https协议报证书错误,导航已阻止

    使用IE浏览器录制https协议报证书错误,导航已阻止,修改如下配置文件:

  3. MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin \'FEDERATED\' is disabled”

    MYSQL启动报1067错误,系统日志中是"服务 mysql 意外停止" Mysql日志中则是:"Plugin \'FEDERATED\' is disabled&quo ...

  4. mysql启动错误之mysql启动报1067错误如何解决

    MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:Plugin 'FEDERATED' is disabled. 解决方法: 1.在MY.INI文件中的 ...

  5. 切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。

    Spring单例注入,单例对象可设置成Spring元件. 只有Spring的元件中@Autowired才有用,在普通类中@Autowired虽然不会编译报错,但运行时会报空指针错误.

  6. 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project

     使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...

  7. eclipse配置tomcat后启动报内存错误解决方法

    一.双击tomcat服务,打开配置界面 二.打开launch configuration窗口,在Argument最后面加入:-Xms256m -Xmx512m -XX:PermSize=256M -X ...

  8. spring boot项目启动报DataSource错误

    初建一个简单的spring boot 项目,启动后会报错. Exception encountered during context initialization - cancelling refre ...

  9. Tomcat启动报ClassNotFoundException错误,解决

    今天把一个Maven管理的web项目Update后,启动Tomcat(Eclipse中)系统报错.错误提示 java.lang.ClassNotFoundException: ,显示是spring的C ...

随机推荐

  1. FuelPHP 系列(五) ------ Security 防御

    项目中难免会有 form 提交,对用户输入的所有信息进行过滤,可以避免 XSS 攻击,防止 SQL 注入. 一.设置配置信息 首先在 config.php 文件中,对 security 相关信息进行设 ...

  2. poj 2762(强连通分量+拓扑排序)

    题目链接:http://poj.org/problem?id=2762 题意:给出一个有向图,判断任意的两个顶点(u,v)能否从u到达v,或v到达u,即单连通,输出Yes或No. 分析:对于同一个强连 ...

  3. select、poll、epoll之间的区别总结[整理]【转】

    转自:http://www.cnblogs.com/Anker/p/3265058.html select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符 ...

  4. super 使用以及原理

    用super也很久了,但是一直没有关注过他的原理.最近开始越来越多关注python更底层的实现和奇技淫巧.看到该方法越发使用得多所以也研究了一波 平时单继承可能是我们遇到最多的情况.无非就是类似情况. ...

  5. Delphi+DBGrid导出Excel

    uses ComObj; //DBGrid:指定的DBGrid;SaveFileName:要保存的文件名 function ExportDBGrid(DBGrid: TDBGrid; SaveFile ...

  6. [资源]--IOS捷径大全,众多实用小功能

    一.实用工具 1.支付助手3.0(新) (扫一扫.微信扫码.微信收款.支付宝扫码.Apple Pay.AA付款.查快递.蚂蚁森林.蚂蚁庄园.彩票.股票.运动.淘票票.乘车码.生活缴费.火车票等等): ...

  7. docker--compose--sonarqube

    Create this docker-compose.yml file: version: "2" services: sonarqube: image: sonarqube po ...

  8. BZOJ5101[POI2018]Powódź——并查集

    题目描述 在地面上有一个水箱,它的俯视图被划分成了n行m列个方格,相邻两个方格之间有一堵厚度可以忽略不计的墙,水 箱与外界之间有一堵高度无穷大的墙,因此水不可能漏到外面.已知水箱内每个格子的高度都是[ ...

  9. JavaScript无法运行问题

    [出现问题] JavaScript代码在html页面可以正常运行,在js文件夹下无法正常运行 [解决方案] 根据网上查的和自己错误的原因总结下. 1.引用Js的路径不对 ../ 表示上一级目录开始 . ...

  10. 07 zabbix之map拓扑标签中macro应用

    zabbix之map拓扑标签中macro应用 请先预习网地图map : 请点击 macro官方文档介绍 : 请点击 1.  Map labels(拓扑图标签)主要注意以下Macros(宏):  MAC ...