Failed to start component [Connector[HTTP/1.1-443]]
Failed to start component [Connector[HTTP/1.1-443]]
错误:
org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-443]]
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
Caused by: java.lang.IllegalArgumentException: Alias name [tomcat] does not identify a key entry
Caused by: java.io.IOException: Alias name [tomcat] does not identify a key entry
APPLICATION FAILED TO START
*****************`
Description:
The Tomcat connector configured to listen on port 443 failed to start. The port may already be in use or the connector may be misconfigured.
查了很多资料,每一种都不同,网上很多都是说用java自带的toolkey生成的证书,但是这种证书有弊端,在小程序配置合法域名业务域名的时候没办法获取请求,在这里微信小程序支持官方的,大部分还是购买的证书(这点超级重要),所以我证书是阿里上的免费证书pfx,
在tomcat配置后如下图:
server.servlet.context-path=/family
server.servlet.session.timeout=60
server.tomcat.uri-encoding=UTF-8
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
server.port:443
server.ssl.key-store: classpath:1526994511716.pfx
server.ssl.key-store-password: 1526994511716
server.ssl.keyStoreType: PKCS12
spring.thymeleaf.cache=false
server.ssl.key-alias=tomcat
错误的原因是:server.ssl.key-alias=tomcat造成的,在配置这个证书的时候没有设置别名,如果这servce.xml里面添加别名,也会出现这个错误,这里需要把
server.ssl.key-alias=tomcat注释掉
这样就没有问题了,重启之后,如果没有占用443端口就可以正常运行,在任何浏览器都可以通过自己的域名+项目名+端口号(这里在tomcat的service.xml里面配置了80端口,和https的443端口,所以输入域名加项目访问路径即可,端口号可忽略)
我用的google浏览器 chrome 然后按F12 可以直接查看证书 如图:
大功告成
ssl配置基本信息
server.ssl.ciphers
是否支持SSL ciphers.
server.ssl.client-auth
设定client authentication是wanted 还是 needed.
server.ssl.enabled
是否开启ssl,默认: true
server.ssl.key-alias
设定key store中key的别名.
server.ssl.key-password
访问key store中key的密码.
server.ssl.key-store
设定持有SSL certificate的key store的路径,通常是一个.jks文件.
server.ssl.key-store-password
设定访问key store的密码.
server.ssl.key-store-provider
设定key store的提供者.
server.ssl.key-store-type
设定key store的类型.
server.ssl.protocol
使用的SSL协议,默认: TLS
server.ssl.trust-store
持有SSL certificates的Trust store.
server.ssl.trust-store-password
访问trust store的密码.
server.ssl.trust-store-provider
设定trust store的提供者.
server.ssl.trust-store-type
指定trust store的类型.