【问题标题】:Tomcat is not starting in port 8443Tomcat 未在 8443 端口启动
【发布时间】:2021-08-18 09:46:33
【问题描述】:

我在 digitalocean 的 ubuntu 虚拟机中使用 apache 服务器托管了一个网站。我想在我的后端 url 上配置 Tomcat 8 上的 SSL 以使其成为 HTTPS。

为此,我生成了一个 .keystore 并更改了 tomcat/config 目录中的 server.xml 文件。 但是当我加载端口 8443 和我的 ip (https://111.11.11.11:8443/) 时,它不会加载。 8443端口不在服务器监听列表中。

我的 server.xml 文件如下。

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
          type="org.apache.catalina.UserDatabase"
          description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>


<Service name="Catalina">


<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />


<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
       disableUploadTimeout="true" enableLookups="false"
       keystoreFile="/home/sedsslweb/tomcat.keystore" keystorePass="password"
       maxThreads="25" port="8443"
       protocol="org.apache.coyote.http11.Http11NioProtocol"
       scheme="https" secure="true" sslProtocol="TLS"/>

 <Engine name="Catalina" defaultHost="localhost">

 <Realm className="org.apache.catalina.realm.LockOutRealm">
 <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
 </Realm>

 <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

  </Host>
</Engine>
</Service>
</Server>

基本上我想要的是使后端 url https 因为我无法将请求从我的 https 前端 url 发送到后端 http url 因为它被阻止是因为混合内容(前端和后端必须是https还是http)。

我被这个问题困扰了好几天,谁能帮我解决这个问题。或者至少是制作后端 https 的替代方案。

Ps:在 catalina.out 中我得到了这个错误。

 org.apache.catalina.LifecycleException: Protocol handler initialization failed
            at org.apache.catalina.connector.Connector.initInternal(Connector.java:1077)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
            at org.apache.catalina.core.StandardService.initInternal(StandardService.java:557)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
            at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:850)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
            at org.apache.catalina.startup.Catalina.load(Catalina.java:639)
            at org.apache.catalina.startup.Catalina.load(Catalina.java:662)
            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:305)
            at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
    Caused by: java.lang.IllegalArgumentException: /opt/tomcat/tomcat.keystore (Permission denied)
            at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:100)
            at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:72)
            at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:247)
            at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1147)
            at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:222)
            at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:599)
            at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:80)
            at org.apache.catalina.connector.Connector.initInternal(Connector.java:1074)

【问题讨论】:

  • 启动服务器后有没有看到tomcat进程在运行?你能从你的 catalina.out 和 catalina.log 文件中发布任何相关信息吗?向我们展示您用于生成密钥库文件的命令?您希望我们如何在没有任何信息的情况下解决此问题?
  • 您也创建了密钥库,但您导入了什么?您是否生成了 CSR?
  • @ChrisMaggiulli 我更新了问题。你能看看吗?
  • 什么用户和组拥有tomcat及其文件?哪个用户和组拥有密钥库?密钥库上的权限位是什么?可以试试chmod 400 /opt/tomcat/tomcat.keystore
  • @ChrisMaggiulli 感谢您的指导。这是 /opt/tomcat 的权限问题。

标签: ssl tomcat https server.xml


【解决方案1】:

我刚刚更改了 /opt/tomcat 目录的权限,它就像一个魅力。

chown -R tomcat:tomcat /opt/tomcat

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2013-07-01
    • 2016-01-25
    相关资源
    最近更新 更多