Score:0

ฉันจะตั้งค่า SSL ใน Tomcat9 ได้อย่างไร

ธง kr

ฉันได้ลองติดตั้ง SSL บน Tomcat 9 บนพอร์ต 8443 แล้ว อย่างไรก็ตาม ฉันไม่รู้ว่า Tomcat รองรับ pem หรือ crt format SSL หรือไม่

ฉันได้ทำการเปลี่ยนแปลงใน server.xml แต่เมื่อเริ่ม Tomcat ฉันได้รับข้อผิดพลาดด้านล่างในบันทึก catelina.out

ด้านล่างคือการกำหนดค่า server.xma ของฉัน

 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/privkey.key"
                         certificateFile="conf/fullchain.crt"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

บันทึกข้อผิดพลาด Tomcat

org.apache.coyote.AbstractProtocol.init กำลังเริ่มต้น ProtocolHandler ["https-openssl-nio-8443"]
17 พ.ย. 2021 14:58:19.826 SEVERE [หลัก] org.apache.catalina.util.LifecycleBase.handleSubClassException ไม่สามารถเริ่มต้นคอมโพเนนต์ [Connector[HTTP/1.1-8443]]
    org.apache.catalina.LifecycleException: การเตรียมใช้งานตัวจัดการโปรโตคอลล้มเหลว
        ที่ org.apache.catalina.connector.Connector.initInternal(Connector.java:983)
        ที่ org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        ที่ org.apache.catalina.core.StandardService.initInternal(StandardService.java:533)
        ที่ org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        ที่ org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1059)
        ที่ org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        ที่ org.apache.catalina.startup.Catalina.load(Catalina.java:584)
        ที่ org.apache.catalina.startup.Catalina.load(Catalina.java:607)
        ที่ java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (เมธอดเนทีฟ)
        ที่ java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        ที่ java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        ที่ java.base/java.lang.reflect.Method.invoke(Method.java:566)
        ที่ org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:304)
        ที่ org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474)
    เกิดจาก: java.lang.IllegalArgumentException
        ที่ org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99)
        ที่ org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl (AbstractJsseEndpoint.java:71)
        ที่ org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218)
        ที่ org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124)
        ที่ org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1137)
        ที่ org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:574)
        ที่ org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)
        ที่ org.apache.catalina.connector.Connector.initInternal(Connector.java:980)
        ... 13 เพิ่มเติม
    เกิดจาก: java.lang.NullPointerException
        ที่ org.apache.tomcat.util.net.jsse.PEMFile.<init>(PEMFile.java:101)
        ที่ org.apache.tomcat.util.net.jsse.PEMFile.<init>(PEMFile.java:74)
        ที่ org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:303)
        ที่ org.apache.tomcat.util.net.openssl.OpenSSLUtil.getKeyManagers(OpenSSLUtil.java:98)
        ที่ org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247)
        ที่ org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:
ru flag
ฉันขอแนะนำอย่างยิ่งให้คุณเก็บแอปพลิเคชัน Tomcat ของคุณไว้ภายในและเปิดเผยผ่าน reverse proxy เท่านั้น (ผ่าน Apache2 โดยตรงหรือผ่าน NGINX) เนื่องจาก Tomcat มีชื่อเสียงในเรื่องการไม่สร้าง SSL ให้ง่ายเหมือนกับส่วนดั้งเดิมของแอปพลิเคชัน
Score:2
ธง cn

Tomcat ขึ้นชื่อว่ายากกับ SSL คำแนะนำของฉัน: วาง reverse proxy ไว้ข้างหน้าเพื่อจัดการ SSL

มีชุดซอฟต์แวร์ให้เลือกมากมายที่สามารถใช้เป็นพร็อกซีย้อนกลับได้ สองอันที่ได้รับความนิยมมากกว่าคือ Apache และ Nginx เลือกอย่างใดอย่างหนึ่ง ติดตั้งบนเครื่องเดียวกันกับเซิร์ฟเวอร์ Tomcat ของคุณ และกำหนดค่าให้ยอมรับคำขอ HTTPS บนพอร์ตที่คุณเลือก และส่งต่อเป็น HTTP ไปยังพอร์ต Tomcat HTTP ของคุณ

บทช่วยสอนสำหรับการตั้งค่า Apache หรือ Nginx เป็นพร็อกซีย้อนกลับ SSL มีอยู่หลายแห่ง เช่น ที่นี่ และ ที่นี่.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา