ข้อผิดพลาด Tomcat SSL หลังจากตั้งค่าใบรับรอง


2

หลังจากสร้างไฟล์ใบรับรองและคีย์ pem โดยใช้ openssl บน ubuntu 16.04 ฉันได้กำหนดค่าตัวเชื่อมต่อ tomcat ในไฟล์ server.xml ตามที่ระบุด้านล่าง แต่เมื่อฉันเริ่ม tomcat ฉันได้รับข้อผิดพลาด

ในเบราว์เซอร์เมื่อฉันกด URL นี้: https: // localhost: 8443 / มันให้ข้อผิดพลาดที่ระบุด้านล่าง:

This site can’t provide a secure connection localhost sent an invalid response. 

คำสั่งที่ใช้ในการสร้างไฟล์ cert และ key pem คือ:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

ขั้วต่อ Tomcat เป็นดังนี้:

<Connector port="8443" maxHttpHeaderSize="8192"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" disableUploadTimeout="true"
        acceptCount="100" scheme="https" secure="true"
        clientAuth="false" sslProtocol="TLS"   SSLEngine="on"   SSLCertificateFile="conf/cert.pem"   SSLCertificateKeyFile="conf/key.pem" />

อื่น ๆ อีก:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

Generating a 4096 bit RSA private key ..........................................................................

writing new private key to 'key.pem'

Country Name (2 letter code) [AU]:IN  State or Province Name (full
name) [Some-State]:MH  Locality Name (eg, city) []:Pune  Organization
Name (eg, company) [Internet Widgits Pty Ltd]:softdel Organizational
Unit Name (eg, section) []:iot  Common Name (e.g. server FQDN or YOUR
name) []:localhost  Email Address []:xyz@gmail.com

screenshot showing error

บันทึก:

23-Jun-2018 13:29:35.460 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
23-Jun-2018 13:29:35.483 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8443"]
23-Jun-2018 13:29:35.488 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
23-Jun-2018 13:29:35.490 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 5150 ms
23-Jun-2018 13:29:35.656 INFO [http-nio-8443-exec-1] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:410)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:291)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

23-Jun-2018 13:29:35.659 INFO [http-nio-8443-exec-2] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:410)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:291)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

23-Jun-2018 13:29:35.720 INFO [http-nio-8443-exec-3] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:410)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:291)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

2018-06-23 13:29:42 [http-nio-8443-exec-17] INFO  org.apache.jsp.index_jsp -  - Entered page login

คำถามจริงของคุณคืออะไร
Seth

หลังจากสร้างไฟล์ใบรับรองและคีย์ pem แล้ว ฉันกำหนดค่าตัวเชื่อมต่อ tomcat ในไฟล์ server.xml ตามที่ระบุด้านล่าง; แต่เมื่อฉันเริ่มต้นคราวและในเบราว์เซอร์ถ้าฉันกด URL นี้: localhost: 8443 มันให้ข้อผิดพลาดนี้: ไซต์นี้ไม่สามารถให้การเชื่อมต่อที่ปลอดภัยในพื้นที่โฮสต์ส่งการตอบกลับที่ไม่ถูกต้อง
Vitthal Shirke

Tomcat รุ่นใด คุณอาจต้องระบุเส้นทางแบบเต็มของใบรับรองและคีย์ของคุณ คุณทำตามขั้นตอนเหล่านี้: tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html ?
Gerard H. Pille

บน Ubuntu 16.04 ปัจจุบันฉันใช้ tomcat 9 และฉันลองบน tomcat 8 เช่นกัน ฉันทำตามขั้นตอนที่ให้ไว้ในลิงค์ด้านบนเช่นกัน
Vitthal Shirke

ฉันได้ลองใช้เส้นทางแบบเต็มสำหรับใบรับรองและคีย์แล้ว
Vitthal Shirke

คำตอบ:


0

คุณต้องการและไม่ได้ ชุด SSLEnabled="true" - ดู ย่อหน้าแรกของส่วน SSL ของเอกสารตัวเชื่อมต่อ . Tomcat กำลังฟังในโหมด HTTP-not-S ดังนั้นเมื่อเบราว์เซอร์ส่ง SSL / TLS ClientHello Tomcat คิดว่าเป็นคำขอ HTTP ที่ไม่ถูกต้องและส่งการตอบกลับข้อผิดพลาด HTTP ซึ่งเบราว์เซอร์คิดว่าเป็นการตอบสนอง SSL / TLS ที่ไม่ถูกต้อง

ฉันไม่ทราบว่าแพ็คเกจของ Ubuntu รวม APR (ซึ่งใช้สแต็ก OpenSSL) หรือที่รู้จักว่า 'tomcat-native' สำหรับ Tomcat 8 ไฟล์ใบรับรอง & รูปแบบ PEM จะทำงานได้ก็ต่อเมื่อใช้ APR; สำหรับ Java SSL / TLS stack (JSSE) คุณต้องใช้ที่เก็บรูปแบบ Java สำหรับ Tomcat 8.5 หรือ 9 มันจะใช้เวลาอย่างใดอย่างหนึ่งและแปลงภายในตามที่ต้องการ นี่คือคำอธิบายในเอกสาร

โปรดทราบว่าสำหรับเบราว์เซอร์ที่จะ วางใจ ใบรับรองที่ลงนามเองของคุณคุณจะต้องเพิ่มลงใน truststore ของเบราว์เซอร์นั้น วิธีที่คุณทำสิ่งนี้ขึ้นอยู่กับเบราว์เซอร์และบางครั้งแพลตฟอร์มและฉันไม่ได้ใช้เบราว์เซอร์ใด ๆ บน Ubuntu ดังนั้นฉันอาจไม่สามารถช่วยเหลือส่วนนั้นได้


เฮ้ @VitthalShirke คุณดูเหมือนจะค่อนข้างใหม่ดังนั้นอาจตรวจสอบ ส่วนความช่วยเหลือเกี่ยวกับสิ่งที่ต้องทำถ้ามีคนตอบคำถามของคุณ .
Seth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.