เรามีสองเว็บไซต์ที่ทำงานบน apache เดียว:
www-example1-com, www-example2-com
www-example1-com เป็นไซต์แรกที่มีอยู่ ได้รับใบรับรองเข้ารหัสและใช้งานได้ดี
www-example2-com เป็นไซต์ที่สองที่ได้รับใบรับรองการเข้ารหัสเช่นกัน
www-example1-com ทำงานได้ดี www-example2-com ทำให้เกิดข้อผิดพลาดใน Firefox และ Chromium
SSL_ERROR_NO_CYPHER_OVERLAP ใน Firefox
ERR_SSL_VERSION_OR_CIPHER_MISMATCH ใน Chromium
สิ่งที่ฉันทำจนถึงตอนนี้:
- ฉันสร้างใบรับรองสำหรับ www-example2
- ฉันขยายใบรับรองของ www-example1 เพื่อนับสำหรับ www-example2 ด้วย
- ฉันขยาย example2.conf ใน /etc/apache2/sites-available โดยข้อมูลโค้ดจาก
https://ssl-config.mozilla.org/
- ฉันลบคีย์และใบรับรองสำหรับ www.example2 แล้วรวบรวมใหม่
- ฉันตรวจสอบ example1-conf, example2-conf, 000-default-le-ssl.conf, apache2.conf
- https://www.ssllabs.com/ssltest/analyze.html?d=example2.com --> การประเมินล้มเหลว: ไม่สามารถสื่อสารกับเซิร์ฟเวอร์ที่ปลอดภัย
error.log ของ apache แสดงผลบรรทัดนี้: [ssl:info] [pid 19288] (70014) พบจุดสิ้นสุดของไฟล์: [client 192.168.0.9:53597] AH01991: การอ่านตัวกรองอินพุต SSL ล้มเหลว
โปรดทราบ: มี SNI ที่ดูเหมือนจะได้รับการกำหนดค่าอย่างถูกต้อง แต่ฉันไม่สามารถเข้าถึงได้โดยตรง
ในแต่ละกรณี ข้อความแสดงข้อผิดพลาดจะไม่เปลี่ยนแปลง
000-default-le-ssl.conf:
<IfModule mod_ssl.c>
<VirtualHost *:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
ServerAdmin webmaster@localhost
Protocols h2 h2c http/1.1
DocumentRoot /var/www/html/
ServerName www.example1.com
ServerAlias example1.com
Protocols h2 h2c http/1.1
<Directory /var/www/>
Options -Indexes +FollowSymLinks
AllowOverride all
Order allow,deny
allow from all
</Directory>
# added 01.04.2019 END
<Directory /var/www/html/>
Options -Indexes +FollowSymlinks
AllowOverride All
Require all granted
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#SSLEngine off
#Include /etc/letsencrypt/options-ssl-apache.conf
#Header always set Content-Security-Policy upgrade-insecure-requests
Include /etc/letsencrypt/options-ssl-apache.conf
#SSLCertificateFile /etc/letsencrypt/live/www.example2.com/fullchain.pem
#SSLCertificateKeyFile /etc/letsencrypt/live/www.example2.com/privkey.pem
#Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/www.example1.com-0001/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example1.com-0001/privkey.pem
</VirtualHost>
</IfModule>
ตัวอย่าง2.conf
<VirtualHost *:80>
Protocols h2 http/1.1
ServerAdmin [email protected]
DocumentRoot /var/www/html1/example2/
ServerName www.example2.com
ServerAlias example2.com
<Directory /var/www/html1/example2>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example2.com [OR]
RewriteCond %{SERVER_NAME} =example2.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
Protocols h2 h2c http/1.1
DocumentRoot /var/www/html1/example2
ServerName www.example2.com
ServerAlias example2.com
<Directory /var/www/html1>
Options -Indexes +FollowSymLinks
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Directory /var/www/html1/example2>
Options -Indexes +FollowSymlinks
AllowOverride All
Require all granted
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
# 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
# SSLHonorCipherOrder off
# SSLSessionTickets off
#SSLUseStapling On
#SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/www.example1.com-0001/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example1.com-0001/privkey.pem
</VirtualHost>
</IfModule>
ผลลัพธ์ของ openssl:
เชื่อมต่อแล้ว(00000003)
140386018971712:ข้อผิดพลาด:14094410:รูทีน SSL:ssl3_read_bytes:sslv3 การแจ้งเตือนการจับมือล้มเหลว:../ssl/record/rec_layer_s3.c:1407:การแจ้งเตือน SSL หมายเลข 40
---
ไม่มีใบรับรองเพื่อน
---
ไม่มีการส่งชื่อ CA ของใบรับรองไคลเอ็นต์
---
SSL handshake อ่าน 7 ไบต์และเขียน 198 ไบต์
การยืนยัน: ตกลง
---
ใหม่ (ไม่มี) รหัสคือ (ไม่มี)
ไม่สนับสนุนการเจรจาใหม่อย่างปลอดภัย
การบีบอัด: ไม่มี
การขยายตัว: ไม่มี
ไม่มีการเจรจา ALPN
เซสชัน SSL:
โปรโตคอล : TLSv1.2
รหัส : 0000
รหัสเซสชัน:
เซสชัน-ID-ctx:
กุญแจหลัก:
ตัวตน PSK: ไม่มี
คำใบ้ประจำตัว PSK: ไม่มี
ชื่อผู้ใช้ SRP: ไม่มี
เวลาเริ่มต้น: 1623677307
หมดเวลา : 7200 (วินาที)
ตรวจสอบรหัสส่งคืน: 0 (ตกลง)
ความลับหลักเพิ่มเติม: ไม่
ใครช่วยกรุณาช่วยค้นหาข้อผิดพลาดได้ไหม กรุณาบอกฉันหากคุณต้องการข้อมูลเพิ่มเติม
ขอบคุณล่วงหน้า.