ฉันใช้งานอุปกรณ์ฮาร์ดแวร์ Unifi ซึ่งมาพร้อมกับใบรับรองที่ลงนามด้วยตนเอง ซึ่งออกให้เมื่อ ยูนิไฟ.โลคอล
. สำหรับการตั้งค่าปัจจุบันของฉัน ไม่มีตัวเลือกในการนำเข้าใบรับรองบนอุปกรณ์โดยตรงด้วยเหตุผลหลายประการ ดังนั้นฉันจึงพยายามกำจัดข้อความใบรับรองที่ไม่ถูกต้องในเบราว์เซอร์ของฉันโดยใช้พร็อกซีย้อนกลับที่ใช้ apache2 ซึ่งให้การเข้าถึงอุปกรณ์ภายใต้ โดเมนอื่นที่ปลอดภัยโดยใบรับรอง Letsencrypt
การตั้งค่าปัจจุบันของฉันมีลักษณะดังนี้:
แล็ปท็อป <-> Apache Reverse Proxy (2.4.48, Debian, ใบรับรองโดเมนตัวแทนที่เชื่อถือได้) <-> อุปกรณ์ Unifi (ใบรับรองที่ลงนามด้วยตนเอง)
ความคิดของฉันคือการจัดเตรียมโดเมนที่ปลอดภัยที่เรียกว่า unfi.mydomain.tld
ซึ่งช่วยให้เข้าถึงอุปกรณ์ได้อย่างปลอดภัย
ใน apache reverse proxy ของฉัน ฉันสร้างและเปิดใช้งานไฟล์ปรับแต่งที่มีลักษณะดังนี้:
<IfModule mod_ssl.c>
<VirtualHost *:443>
Serveradmin [email protected]"
ServerName unifi.mydomain.tld
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPass "/" "https://10.0.1.1/"
ProxyPassReverse "/" "https://10.0.1.1/"
ProxyPreserveHost Off
TransferLog /var/log/apache2/proxies/unifi_access.log
ErrorLog /var/log/apache2/proxies/unifi_error.log
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
SSLCipherSuite SSL ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384
SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
SSLOpenSSLConfCmd DHParameters /mnt/certificates/diffie-hellman/dhparam4096.pem
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
SSLCertificateFile /etc/letsencrypt/live/mydomain.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.tld/privkey.pem
</VirtualHost>
# Originally from /etc/letsencrypt/options-ssl-apache.conf
# Written directly here because otherwise SSLProtocol etc is overwritten
# Add vhost name to log entries:
SSLOptions +StrictRequire
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
</IfModule>
แต่ถ้าฉันเข้าถึง unfi.mydomain.tld
เบราว์เซอร์ของฉันส่งคืนใบรับรองสำหรับ ยูนิไฟ.โลคอล
และไม่ใช่สำหรับ unfi.mydomain.tld
และทำให้เกิดข้อผิดพลาดว่าใบรับรองไม่น่าเชื่อถือ เคล็ดลับหลายประการที่กล่าวถึงการเปิด SSLProxyVerify
ถึง ไม่มี
, และ SSLProxyCheckPeerName
, SSLProxyCheckPeerCN
, และ SSLProxyCheckPeerหมดอายุ
ถึง ปิด
อย่างไรก็ตาม เทคนิคเหล่านี้ไม่ได้ผล ไม่ใช่ตัวเลือกสำหรับฉันที่จะนำเข้าใบรับรอง Snakeoil ที่ลงนามด้วยตนเองของ Unifi บนเซิร์ฟเวอร์พร็อกซีย้อนกลับของฉัน
ฉันไม่แน่ใจว่า apache2 เองบ่นเกี่ยวกับใบรับรองหรือส่งคืนใบรับรองที่ไม่ถูกต้อง ฉันจะเข้าถึงอุปกรณ์ได้อย่างไรโดยการเรียกดู unfi.mydomain.tld
โดยไม่ได้รับใบรับรองข้อผิดพลาดนี้