Openssl 如何解决问题';org.apache.tomcat.jni.Error:70023:此功能尚未在此平台上实现';

Openssl 如何解决问题';org.apache.tomcat.jni.Error:70023:此功能尚未在此平台上实现';,openssl,tomcat8,apr,Openssl,Tomcat8,Apr,我已经在Ubuntu18.04.LTS上安装了Tomcat 8.5.39(JVM 12.0.1+12),并将其配置为使用带有Tomcat本机的APR模块(我有OpenSSL 1.1.1) 我运行以下命令时没有任何错误: ~/apr-1.7.0/ ./configure make & make install ~/tomcat-native-1.2.21-src/native/ ./configure --with-apr=/usr/local/apr/bin/apr-1-config

我已经在Ubuntu18.04.LTS上安装了Tomcat 8.5.39(JVM 12.0.1+12),并将其配置为使用带有Tomcat本机的APR模块(我有OpenSSL 1.1.1)

我运行以下命令时没有任何错误:

~/apr-1.7.0/
./configure
make & make install

~/tomcat-native-1.2.21-src/native/
./configure --with-apr=/usr/local/apr/bin/apr-1-config
make & make install
下面是server.xml中HTTPS配置的摘录:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>

<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="1000" SSLEnabled="true">
         <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
         <SSLHostConfig>
            <Certificate certificateKeyFile="/etc/tomcat8/serverkey.p7b"
                         certificateFile="/etc/tomcat8/servercer.p7b"
                         certificateChainFile="/etc/tomcat8/intermediate.p7b"
                       type="RSA"  />
        </SSLHostConfig>
    </Connector>

Tomcat启动并使用HTTP,但我在有关APR配置的日志中有错误。以下是catalina.out中的完整日志:

11-Jul-2019 11:47:40.331 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          May 9 2019 13:50:49 UTC
11-Jul-2019 11:47:40.332 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.39.0
11-Jul-2019 11:47:40.333 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
11-Jul-2019 11:47:40.333 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.15.0-52-generic
11-Jul-2019 11:47:40.334 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
11-Jul-2019 11:47:40.334 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-12-oracle
11-Jul-2019 11:47:40.335 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           12.0.1+12
11-Jul-2019 11:47:40.335 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
11-Jul-2019 11:47:40.336 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /var/lib/tomcat8
11-Jul-2019 11:47:40.336 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/share/tomcat8
11-Jul-2019 11:47:40.338 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
11-Jul-2019 11:47:40.338 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
11-Jul-2019 11:47:40.339 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
11-Jul-2019 11:47:40.339 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/var/lib/tomcat8/conf/logging.properties
11-Jul-2019 11:47:40.340 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
11-Jul-2019 11:47:40.340 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true
11-Jul-2019 11:47:40.341 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms128m
11-Jul-2019 11:47:40.341 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx2048m
11-Jul-2019 11:47:40.342 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:PermSize=64m
11-Jul-2019 11:47:40.342 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=512m
11-Jul-2019 11:47:40.343 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseConcMarkSweepGC
11-Jul-2019 11:47:40.343 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.net.preferIPv4Stack=true
11-Jul-2019 11:47:40.344 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.net.preferIPv4Addresses=true
11-Jul-2019 11:47:40.344 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
11-Jul-2019 11:47:40.345 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
11-Jul-2019 11:47:40.345 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
11-Jul-2019 11:47:40.346 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
11-Jul-2019 11:47:40.346 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/var/lib/tomcat8
11-Jul-2019 11:47:40.347 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/share/tomcat8
11-Jul-2019 11:47:40.347 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp
11-Jul-2019 11:47:40.348 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.21] using APR version [1.7.0].
11-Jul-2019 11:47:40.348 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
11-Jul-2019 11:47:40.349 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
11-Jul-2019 11:47:40.354 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Failed to initialize the SSLEngine.
 org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform
        at org.apache.tomcat.jni.SSL.initialize(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.apache.catalina.core.AprLifecycleListener.initializeSSL(AprLifecycleListener.java:289)
        at org.apache.catalina.core.AprLifecycleListener.lifecycleEvent(AprLifecycleListener.java:136)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:395)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:639)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:662)

11-Jul-2019 11:47:40.497 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-80"]
11-Jul-2019 11:47:40.556 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
11-Jul-2019 11:47:40.607 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-apr-443"] connector has been configured to support negotiation to [h2] via ALPN
11-Jul-2019 11:47:40.608 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["https-openssl-apr-443"]
11-Jul-2019 11:47:40.656 WARNING [main] org.apache.tomcat.util.net.openssl.OpenSSLEngine.<clinit> Failed getting cipher list
 java.lang.Exception: Not implemented
        at org.apache.tomcat.jni.SSL.newSSL(Native Method)
        at org.apache.tomcat.util.net.openssl.OpenSSLEngine.<clinit>(OpenSSLEngine.java:77)
        at org.apache.tomcat.util.net.openssl.OpenSSLUtil.getImplementedProtocols(OpenSSLUtil.java:54)
        at org.apache.tomcat.util.net.SSLUtilBase.<init>(SSLUtilBase.java:98)
        at org.apache.tomcat.util.net.SSLUtilBase.<init>(SSLUtilBase.java:82)
        at org.apache.tomcat.util.net.openssl.OpenSSLUtil.<init>(OpenSSLUtil.java:42)
        at org.apache.tomcat.util.net.AprEndpoint.createSSLContext(AprEndpoint.java:397)
        at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:368)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1105)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)
        at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:68)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:993)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:552)
        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:639)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:662)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
11-Jul-2019 11:47:40.830 INFO [main] org.apache.tomcat.util.net.openssl.OpenSSLUtil.getKeyManagers The certificate [/etc/tomcat8/servercer.p7b] or its private key [/etc/tomcat8/serverkey.p7b] could not be processed using a JSSE key manager and will be given directly to OpenSSL
11-Jul-2019 11:47:40.841 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
11-Jul-2019 11:47:40.845 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
11-Jul-2019 11:47:40.847 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1584 ms
11-Jul-2019 11:47:41.067 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
11-Jul-2019 11:47:41.068 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.39 (Ubuntu)
11-Jul-2019 11:47:41.110 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor [/etc/tomcat8/Catalina/localhost/host-manager.xml]
11-Jul-2019 11:47:42.572 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
11-Jul-2019 11:47:42.627 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor [/etc/tomcat8/Catalina/localhost/host-manager.xml] has finished in [1,517] ms
11-Jul-2019 11:47:42.628 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor [/etc/tomcat8/Catalina/localhost/manager.xml]
11-Jul-2019 11:47:43.105 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
11-Jul-2019 11:47:43.108 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor [/etc/tomcat8/Catalina/localhost/manager.xml] has finished in [480] ms
11-Jul-2019 11:47:43.113 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/var/lib/tomcat8/webapps/ROOT]
11-Jul-2019 11:47:45.828 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/var/lib/tomcat8/webapps/ROOT/WEB-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/var/lib/tomcat8/webapps/ROOT/WEB-INF/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
11-Jul-2019 11:47:40.331 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log服务器构建时间:2019年5月9日13:50:49 UTC
2019年7月11日11:47:40.332信息[main]org.apache.catalina.startup.VersionLoggerListener.log服务器编号:8.5.39.0
2019年7月11日11:47:40.333信息[main]org.apache.catalina.startup.VersionLoggerListener.log操作系统名称:Linux
2019年7月11日11:47:40.333信息[main]org.apache.catalina.startup.VersionLoggerListener.log操作系统版本:4.15.0-52-generic
2019年7月11日11:47:40.334信息[main]org.apache.catalina.startup.VersionLoggerListener.log体系结构:amd64
2019年7月11日11:47:40.334信息[main]org.apache.catalina.startup.VersionLoggerListener.log Java Home:/usr/lib/jvm/Java-12-oracle
2019年7月11日11:47:40.335信息[main]org.apache.catalina.startup.VersionLoggerListener.log JVM版本:12.0.1+12
2019年7月11日11:47:40.335信息[main]org.apache.catalina.startup.VersionLoggerListener.log JVM供应商:Oracle公司
2019年7月11日11:47:40.336信息[main]org.apache.catalina.startup.VersionLoggerListener.log catalina_BASE:/var/lib/tomcat8
2019年7月11日11:47:40.336信息[main]org.apache.catalina.startup.VersionLoggerListener.log catalina_HOME:/usr/share/tomcat8
2019年7月11日11:47:40.338 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:--add opens=java.base/java.lang=ALL-UNNAMED
2019年7月11日11:47:40.338 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:--add opens=java.base/java.io=ALL-UNNAMED
2019年7月11日11:47:40.339 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:--add opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
2019年7月11日11:47:40.339 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.util.logging.config.file=/var/lib/tomcat8/conf/logging.properties
2019年7月11日11:47:40.340 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
2019年7月11日11:47:40.340 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.awt.headless=true
2019年7月11日11:47:40.341 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Xms128m
2019年7月11日11:47:40.341 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Xmx2048m
2019年7月11日11:47:40.342 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-XX:PermSize=64m
2019年7月11日11:47:40.342 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-XX:MaxPermSize=512m
2019年7月11日11:47:40.343 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-XX:+useConMarkSweepGC
2019年7月11日11:47:40.343 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.net.preferIPv4Stack=true
2019年7月11日11:47:40.344 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.net.preferIPv4Addresses=true
2019年7月11日11:47:40.344 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djdk.tls.ephemeralDHKeySize=2048
2019年7月11日11:47:40.345信息[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
2019年7月11日11:47:40.345信息[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dorg.apache.catalina.security.SecurityListener.UMASK=0027
2019年7月11日11:47:40.346 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dignore.annowed.dirs=
2019年7月11日11:47:40.346 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dcatalina.base=/var/lib/tomcat8
2019年7月11日11:47:40.347 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dcatalina.home=/usr/share/tomcat8
2019年7月11日11:47:40.347 INFO[main]org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp
2019年7月11日11:47:40.348 INFO[main]org.apache.catalina.core.AprLifecycleListener.lifecycleEvent使用APR版本[1.7.0]加载了基于APR的apache Tomcat本机库[1.2.21]。
2019年7月11日11:47:40.348信息[main]org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能:IPv6[true]、发送文件[true]、接受筛选器[false]、随机[true]。
2019年7月11日11:47:40.349信息[main]org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置:useAprConnector[false],useOpenSSL[true]
2019年7月11日11:47:40.354严重[main]org.apache.catalina.core.AprLifecycleListener.lifecycleEvent未能初始化SSLEngine。
org.apache.tomcat.jni.Error:70023:此功能尚未在此平台上实现
位于org.apache.tomcat.jni.SSL.initialize(本机方法)
位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
位于java.base/jdk.internal.reflect.DelegatingMethodAccessorIm
apt-get install libssl-dev