Tomcat8.5配置https启动报空指针错误

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

您的密钥库包含 1 个条目

别名: 1
创建日期: 2016-3-10
条目类型: PrivateKeyEntry
证书链长度: 3
证书[1]:
所有者: CN=*.guyezhai.com, O=XXXXXXXXXXXXXXXXXX, L=北京市, ST=北京市, C=CN
发布者: CN=WoSign Class 3 OV Server CA G2, O=WoSign CA Limited, C=CN
序列号: 567ab6b63782bdb9e44eba04dc27efe8
有效期开始日期: Thu Mar 10 17:19:17 CST 2016, 截止日期: Fri Mar 10 17:19:17 CST 2017
证书指纹:
         MD5: 72:67:7C:5A:4F:D8:5F:C7:D1:A2:71:53:C5:4A:EE:A3
         SHA1: F7:58:A7:4A:65:DD:B9:5F:51:37:91:33:06:C9:3E:29:3D:A7:3D:E2
         SHA256: 60:62:E0:70:7C:BD:BA:05:E8:87:28:33:8E:4D:2A:2B:5C:A7:30:D0:F0:7A:66:B6:D7:9D:B0:D7:27:65:BA:19
         签名算法名称: SHA256withRSA
         版本: 3

...

可以看到,此证书的别名是“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,空指针报错就消失了。

时间: 2024-12-16 10:52:11

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

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.web.SpringDataWebAutoConfiguration.pageableCustomizer 经过一步步查看删选是因为spring-data-jpa包的版本冲突导致. 解决方案: 修改gradle的build.gradle配置文件 a.添加plugin("org.springfram

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

MYSQL启动报1067错误,系统日志中是"服务 mysql 意外停止" Mysql日志中则是:"Plugin \'FEDERATED\' is disabled" 错误的具体内容是: 121012 11:35:03 [Note] Plugin 'FEDERATED' is disabled. 121012 11:35:03  InnoDB: Error: unable to create temporary file; errno: 2 121012 11:35:

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

 使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-XX:MaxPermSize=768m-Xms1024m-Xmx3072m搜索 二:修改window->preferences --- > JAVA->Edittor->Hovers,将右侧所有复选框清空. 2.因为eclipse上一次未正常关闭,导致启动卡死,错误日志为: [plain

nexus启动报错-----&gt;错误 1067: 进程意外终止。

1.今天启动nexus报错: 2.错误信息 错误 1067: 进程意外终止. 3.检查发现我之前把jdk升级了.然而nexus之前指定的jdk将不再生效. 4.解决办法 找到nexus安装目录 修改bin\jsw\conf\wrapper.conf中的wrapper.java.command #wrapper.java.command=java wrapper.java.command=C:\Program Files\Java\jdk1.7.0_79\bin\java.exe 版权声明:本文为

MySQL Migration Toolkit启动报jre错误

正常启动的话,会报出“an error occurred during the initialization of the runtime system.Please make sure you have the Java Runtime Environment(JRE)5.0 Update 8 or newer instralled.”错误.而本地肯定是安装了java的.这个问题我找了好多解决方案,最终都没能正常启动.而且这个问题也被当做bug提出了,官方的解释是:mysql workbenc

tomcat8.5配置https

一.使用jdk自带的工具生成数字证书 window生成方法: keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\conf\key\tomcat.keystore -validity 36500 centos生成方法: keytool -genkey -v -alias tomcat -keyalg RSA -keystore /usr/local/src/key/tomcat.keystore -validity 36500 命令

Apache配置https启动不了的解决办法

准备工作:有备案了的http域名,去阿里云或者腾讯云购买SSL证书,有免费1年的: 第一步: 找到 #LoadModule ssl_module modules/mod_ssl.so 和 #Include conf/extra/httpd-ssl.conf,去掉前面的#号注释: 第二步: 编辑Apache根目录下 conf/extra/httpd-ssl.conf 文件,修改如下内容:(路径一定要填对,不然启动不了) Listen 443 <VirtualHost *:443> SSLEngi

weblogic部署项目包,报空指针错误

贴出 报错代码 <weblogic> <> <> <1479765377228> <BEA-240003> <Console encountered the following error java.io.IOException: Exception in AppMerge flows' progression at weblogic.deploy.api.internal.utils.AppMerger.getMergedApp(AppM

linux下遇见mysql启动报2002错误解决办法

前言:目前问题解决了,但是仍不知道是什么原因造成的,在出现问题前安装uWSGI后,mysql就出现这个问题的,哪位大侠说说这是怎么回事? 正文:Linux 下 Mysql error 2002 错误解决 先查看 /etc/rc.d/init.d/mysqld status 查看mysql是否已经启动. 若mysql未启动,etc/init.d/mysqld start启动mysql 启动失败,八成是/etc/my.comf文件配置问题,然后mv /etc/my.cnf /tmp/my.cnf,再