Score:0

Apache ไม่ได้ใช้การกำหนดค่าคำสั่ง SSLProtocol & SSLCipherSuite

ธง ne

ฉันกำลังพยายามตั้งค่า HTTPS ในเว็บเซิร์ฟเวอร์ของฉัน ฉันได้รับข้อผิดพลาด รหัสข้อผิดพลาด: SSL_ERROR_NO_CYPHER_OVERLAP ใน firefox และ ERR_SSL_VERSION_OR_CIPHER_MISMATCH ในโครเมียม ฉันค้นหาและพบว่าโปรโตคอล SSL หรือรหัสลับของฉันไม่รองรับ ทดสอบใน ssllab (https://www.ssllabs.com/ssltest/) ส่งผลให้ไม่รองรับโปรโตคอลที่ปลอดภัย. การทดสอบ TLS ของ GeekFlare (https://gf.dev/tls-test) บอกว่าไม่มีการเปิดใช้งานโปรโตคอล TLS ฉันยังทดสอบโดยใช้ nmap --script ssl-enum-ciphers -p 443 mydomain.com และได้ผลลัพธ์นี้

เริ่ม Nmap 7.91 ( https://nmap.org ) เมื่อ 11-09-2021 11:23 WIB
รายงานการสแกน Nmap สำหรับ mydomain.in-addr.arpa (mydomain)
โฮสต์ไม่ทำงาน (เวลาแฝง 0.0079 วินาที)
บริการของรัฐพอร์ต
443/tcp เปิด https
| ssl-enum-ciphers: 
| TLSv1.0: 
| ยันต์: 
| TLS_DH_anon_WITH_AES_256_CBC_SHA - F
| คอมเพรสเซอร์: 
| โมฆะ
| ค่ากำหนดรหัส: ไม่แน่นอน
| ข้อผิดพลาดการตั้งค่ารหัส: รองรับรหัสลับน้อยเกินไป
| คำเตือน: 
| Forward Secrecy ไม่รองรับโดยรหัสใด ๆ
| TLSv1.1: 
| ยันต์: 
| TLS_DH_anon_WITH_AES_256_CBC_SHA - F
| คอมเพรสเซอร์: 
| โมฆะ
| ค่ากำหนดรหัส: ไม่แน่นอน
| ข้อผิดพลาดการตั้งค่ารหัส: รองรับรหัสลับน้อยเกินไป
| คำเตือน: 
| Forward Secrecy ไม่รองรับโดยรหัสใด ๆ
| TLSv1.2: 
| ยันต์: 
| TLS_DH_anon_WITH_AES_256_CBC_SHA - F
| คอมเพรสเซอร์: 
| โมฆะ
| ค่ากำหนดรหัส: ไม่แน่นอน
| ข้อผิดพลาดการตั้งค่ารหัส: รองรับรหัสลับน้อยเกินไป
| คำเตือน: 
| Forward Secrecy ไม่รองรับโดยรหัสใด ๆ
|_ ความแรงน้อยที่สุด: F

Nmap เสร็จสิ้น: 1 ที่อยู่ IP (1 โฮสต์ขึ้น) สแกนใน 2.67 วินาที

โดยพื้นฐานแล้วไม่มีโปรโตคอลและการเข้ารหัสใด ๆ ที่ฉันใส่ในการกำหนดค่า ssl ที่ใช้. ฉันได้รับผลลัพธ์เดียวกันแม้หลังจากเปลี่ยนโปรโตคอลและลองใช้รหัสเฉพาะแล้ว

ฉันใช้ Centos 8, Apache 2.4.37, & Opensl 1.1.1g

นี่คือโปรโตคอล ssl และการตั้งค่ารหัสล่าสุดของฉัน:

โปรโตคอล SSL ทั้งหมด -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

ฉันได้ตั้งค่าไว้ใน ssl config ทั้งหมด ฉันรู้ว่ามี SSLProtocol และ SSLCipherSuite ในเซิร์ฟเวอร์ของฉัน:

/etc/httpd/conf.d/ssl.conf

/etc/httpd/conf.d/mydomain.conf

/etc/letsencrypt/options-ssl-apache.conf

แก้ไข

การเข้ารหัส opensl -s -v แสดง


TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=Au = Enc ใดๆ=AESGCM(256) Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=ใดๆ Au=ใดๆ Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=ใดๆ Au=ใดๆ Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-ECDSA-AES256-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(256) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-ECDSA-AES256-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
ECDHE-RSA-AES256-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
AES256-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(256) Mac=AEAD
AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
AES128-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(128) Mac=AEAD
AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
DHE-RSA-AES256-CCM TLSv1.2 Kx=DH Au=RSA Enc=AESCCM(256) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-CCM TLSv1.2 Kx=DH Au=RSA Enc=AESCCM(128) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1

openssl s_client -เชื่อมต่อ server_public_IP:443 ผลตอบแทน

เชื่อมต่อแล้ว(00000003)
140639468660544:ข้อผิดพลาด:14094410:รูทีน SSL:ssl3_read_bytes:sslv3 การแจ้งเตือนการจับมือกันล้มเหลว:ssl/record/rec_layer_s3.c:1544:การแจ้งเตือน SSL หมายเลข 40
---
ไม่มีใบรับรองเพื่อน
---
ไม่มีการส่งชื่อ CA ของใบรับรองไคลเอ็นต์
---
SSL handshake อ่าน 7 ไบต์และเขียน 301 ไบต์
การยืนยัน: ตกลง
---
ใหม่ (ไม่มี) รหัสคือ (ไม่มี)
ไม่สนับสนุนการเจรจาใหม่ที่ปลอดภัย
การบีบอัด: ไม่มี
การขยายตัว: ไม่มี
ไม่มีการเจรจา ALPN
ข้อมูลต้นไม่ได้ถูกส่ง
ตรวจสอบรหัสส่งคืน: 0 (ตกลง)
---

ฉันได้ลองใช้โปรโตคอล TLS และการเข้ารหัสอื่น ๆ หลายครั้ง และทุก ๆ การเปลี่ยนแปลงที่ฉันทำไปก็ไม่ได้ผลเลย

มีบางอย่างที่ฉันพลาดไปหรือเปล่า?

อาจมีไฟล์กำหนดค่าอื่นที่แทนที่การกำหนดค่าหรือไม่

ความช่วยเหลือใด ๆ ที่ชื่นชมขอบคุณ

br flag
คุณมีส่วน `ssl_conf` ในไฟล์กำหนดค่า openssl ทั่วทั้งระบบ (ฉันเชื่อว่า `/etc/pki/tls/openssl.cnf` บน CentOS) ถ้าเป็นเช่นนั้น นั่นอาจเป็นการจำกัดการเลือกยันต์ของคุณ นอกจากนี้ `openssl -s -v` แสดงรายการชุดรหัสที่คุณเลือกทั้งหมด/บางส่วน/ใดๆ หรือไม่
actomobile avatar
ne flag
@garethTheRed นี่คือ ssl_conf ภายใน openssl.cnf ```ssl_conf = ssl_module``` ฉันควรเปลี่ยนอะไรเพื่อแก้ไข?. ``` openssl ciphers -s -v``` มีชุดรหัสที่ฉันเลือกไว้
br flag
แสดงความคิดเห็นชั่วคราวและดูว่าจะช่วยได้หรือไม่ นอกจากนี้ `openssl ciphers -s -v` จำเป็นต้องแสดงรายการรหัสที่เซิร์ฟเวอร์ของคุณยอมรับ __and__ ที่เสนอโดยไคลเอนต์ - ไม่ใช่แค่รหัสก่อนหน้า
actomobile avatar
ne flag
@garethTheRed การแสดงความคิดเห็นไม่ได้ช่วยอะไร ผลลัพธ์เดียวกัน การเข้ารหัสเหล่านี้มาจากตัวสร้างการกำหนดค่า ssl ของ Mozilla ฉันถือว่าควรยอมรับ นอกจากนี้ยังมี ```.include /etc/crypto-policies/back-ends/opensslcnf.config``` บรรทัดใน ```openssl.cnf``` ไฟล์นั้นมีส่วน CipherSuite ด้วย บางทีนั่นอาจแทนที่การกำหนดค่าด้วย
actomobile avatar
ne flag
ไม่ การเปลี่ยน CipherSuites ใน ```/etc/crypto-policies/back-ends/opensslcnf.config``` ไม่ได้ผล
br flag
คุณสามารถเริ่มใช้ Wireshark หรือ tcpdump เพื่อตรวจสอบเซิร์ฟเวอร์และดูว่ามีการเข้ารหัสใดบ้างในระหว่างการจับมือกัน อีกทางเลือกหนึ่งคือการใช้ไคลเอนต์ที่แตกต่างกัน (เช่น `openssl s_client`) เพื่อดูว่าเชื่อมต่อได้หรือไม่ และลองใช้เซิร์ฟเวอร์พื้นฐานที่มี `openssl s_server` เพื่อดูว่าอนุญาตการเชื่อมต่อหรือไม่ เครื่องมือเหล่านี้จะช่วยให้คุณจำกัดขอบเขตของปัญหา
actomobile avatar
ne flag
@garethTheRed `openssl s_server` ส่งคืนข้อผิดพลาดต่าง ๆ เกี่ยวกับไฟล์ใบรับรองบางไฟล์ที่ไม่มีอยู่ หลังจากสร้างไฟล์ดังกล่าวแล้ว ไม่พบข้อผิดพลาดของไฟล์ที่หายไป แต่ฉันได้รับ แต่ฉันไม่รู้ว่าไฟล์ใดควรมีบรรทัด PRIVATE KEY
br flag
หากคุณดูที่หน้า man สำหรับ s_server คุณจะเห็นว่ามันต้องการรหัสส่วนตัว สิ่งนี้สามารถฝังอยู่ในใบรับรอง (ส่งผ่านเป็น `-cert`) หรือไฟล์อื่นที่ส่งผ่านเป็น '-key' รหัสส่วนตัวจะถูกสร้างขึ้นเมื่อคุณสร้างใบรับรอง
actomobile avatar
ne flag
@garethTheRed เพิ่มงาน `-cert` และ `-key` คำสั่งส่งคืน `ใช้พารามิเตอร์ temp DH เริ่มต้น ยอมรับ` ฉันถือว่าเหตุผลที่ nmap แสดงเฉพาะ `TLS_DH_anon_WITH_AES_256_CBC_SHA - F` cipher เป็นเพราะ opensl ใช้พารามิเตอร์ DH หรือไม่ ถ้าเป็นเช่นนั้น ฉันจะเปลี่ยนได้อย่างไร
br flag
หากคุณเรียกใช้อีกครั้งด้วยตัวเลือก `-www` (ตัวพิมพ์เล็ก) จากนั้นชี้เบราว์เซอร์ไปที่เบราว์เซอร์ มันจะแสดงรายการรหัสที่สามารถใช้ได้และรหัสทั่วไปที่ใช้กับเบราว์เซอร์และเบราว์เซอร์ ที่อาจช่วยคุณได้ นอกจากนี้ อัลกอริทึมคีย์สาธารณะของคุณคืออะไร รายการในคำถามของคุณมีเพียง RSA และ ECDSA เป็นอัลกอริทึมคีย์ที่ยอมรับได้ - ฉันคิดว่าคุณกำลังใช้หนึ่งในนั้น
actomobile avatar
ne flag
@garethTheRed ฉันใช้ RSA เป็นอัลกอริทึมหลัก (ฉันคิดว่า) ฉันคิดว่าปัญหาอาจอยู่ที่เครือข่ายภายนอก การใช้ localhost IP เมื่อรัน `nmap` หรือ `s_client` ภายในเซิร์ฟเวอร์ทำงานได้ดีและรหัสอยู่ในรายการ แต่เมื่อฉันใช้ IP สาธารณะของเซิร์ฟเวอร์ ผลลัพธ์จะเหมือนกับข้อผิดพลาดข้างต้น
actomobile avatar
ne flag
หากฉันหยุดบริการ httpd ฉันมีข้อผิดพลาดอื่นเมื่อฉันพยายามเข้าถึงเว็บโดยใช้ http และ https http ส่งคืน "การเชื่อมต่อถูกรีเซ็ต" ในขณะที่ https ยังคงส่งคืน "NO_CYPHER_OVERLAP" เหมือนเดิม พวกเขาควรจะมีข้อผิดพลาดเดียวกันไม่ใช่หรือ
br flag
จากนั้นคุณมีอย่างอื่นที่กำลังทำงานอยู่ซึ่งกำลังตอบสนอง เรียกใช้ `netstat -tlnp` หรือ `ss -tlnp` (ทั้งในฐานะรูท) เพื่อดูว่ากำลังฟังอะไรอยู่บนพอร์ตเหล่านั้น
actomobile avatar
ne flag
@garethTheRed ดูเหมือนว่าจะเป็นอย่างนั้น แต่มีเพียง httpd เท่านั้นที่รับฟังพอร์ต เมื่อฉันหยุดมัน ตัวตรวจสอบพอร์ตที่เปิดอยู่แสดงว่าพอร์ตยังคงเปิดอยู่ แม้ว่าจะไม่มีสิ่งใดรับฟังพอร์ตก็ตาม บางทีปัญหาอาจอยู่นอกเซิร์ฟเวอร์ของฉัน
actomobile avatar
ne flag
@garethTheRed ฉันพบปัญหา! ปรากฎว่าเป็นเพราะพอร์ตไม่ได้ส่งต่อและมีอย่างอื่นกำลังฟังอยู่ ฉันไม่เคยคิดแบบนั้นเลยเพราะมันเปิดอยู่ในตัวตรวจสอบพอร์ตที่เปิดอยู่ ดังนั้นฉันจึงคิดว่ามันถูกส่งต่อไปแล้ว ขอบคุณสำหรับความช่วยเหลือของคุณ!
Score:1
ธง ne

ปรากฎว่าปัญหาไม่ได้อยู่ในการกำหนดค่า พอร์ตที่ฉันใช้อยู่นั้นไม่ได้ส่งต่อและมีอย่างอื่นคอยรับฟัง จึงทำให้ตัวตรวจสอบพอร์ตเปิดแสดงพอร์ตว่าเปิดอยู่ ทุกอย่างทำงานได้ดีหลังจากส่งต่อพอร์ต

โพสต์คำตอบ

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