ฉันมีใบรับรองตัวแทน ssl (letsencrypt) สำหรับ example.de & *.example.com
000-default.conf ของฉันมีลักษณะดังนี้:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerName example.de
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Redirect permanent / https://example.de/
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<VirtualHost *:80>
ServerName cloud.example.de
ServerAdmin [email protected]
DocumentRoot /var/www/cloud.example.de
Redirect permanent / https://cloud.example.de/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName dev.example.de
ServerAdmin [email protected]
DocumentRoot /var/www/dev.example.de
Redirect permanent / https://dev.example.de/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
เริ่มต้น-ssl.conf:
<IfModule mod_ssl.c>
<โฮสต์เสมือน *:443>
ชื่อเซิร์ฟเวอร์ example.de
SSLEngine เปิดอยู่
SSLCertificateFile /etc/letsencrypt/live/example.de/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.de/privkey.pem
DocumentRoot /var/www/html
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน
</เวอร์ชวลโฮสต์>
<โฮสต์เสมือน _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# loglevels ที่มีอยู่: trace8, ..., trace1, debug, ข้อมูล, ประกาศ, เตือน,
# ข้อผิดพลาด วิกฤต การแจ้งเตือน เกิดขึ้น
# นอกจากนี้ยังสามารถกำหนดค่าล็อกระดับโดยเฉพาะได้
# โมดูล เช่น
#ข้อมูล LogLevel ssl:warning
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน
# สำหรับไฟล์การกำหนดค่าส่วนใหญ่จาก conf-available/ ซึ่งได้แก่
# เปิดใช้งานหรือปิดใช้งานในระดับโลกก็เป็นไปได้
# รวมบรรทัดสำหรับโฮสต์เสมือนหนึ่งรายการเท่านั้น ตัวอย่างเช่น
# บรรทัดต่อไปนี้เปิดใช้งานการกำหนดค่า CGI สำหรับโฮสต์นี้เท่านั้น
# หลังจากถูกปิดใช้งานทั่วโลกด้วย "a2disconf"
#รวม conf-available/serve-cgi-bin.conf
# สวิตช์เครื่องยนต์ SSL:
# เปิด / ปิด SSL สำหรับโฮสต์เสมือนนี้
SSLEngine เปิดอยู่
# สามารถสร้างใบรับรองที่ลงนามเอง (snakeoil) ได้โดยการติดตั้ง
# แพ็คเกจ ssl-cert ดู
# /usr/share/doc/apache2/README.Debian.gz สำหรับข้อมูลเพิ่มเติม
# หากทั้งคีย์และใบรับรองถูกจัดเก็บไว้ในไฟล์เดียวกัน เฉพาะไฟล์
# จำเป็นต้องมีคำสั่ง SSLCertificateFile
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
# เชนใบรับรองเซิร์ฟเวอร์:
# ชี้ SSLCertificateChainFile ที่ไฟล์ที่มีไฟล์
# การต่อใบรับรอง CA ที่เข้ารหัส PEM ซึ่งเป็นรูปแบบ
# สายใบรับรองสำหรับใบรับรองเซิร์ฟเวอร์ อีกทางหนึ่ง
# ไฟล์อ้างอิงสามารถเหมือนกับ SSLCertificateFile
# เมื่อเพิ่มใบรับรอง CA เข้ากับเซิร์ฟเวอร์โดยตรง
#ใบรับรองเพื่อความมั่นใจ
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
# ผู้ออกใบรับรอง (CA):
# กำหนดเส้นทางการตรวจสอบใบรับรอง CA ที่จะค้นหา CA
# ใบรับรองสำหรับการรับรองความถูกต้องของไคลเอนต์หรืออีกทางเลือกหนึ่ง
# ไฟล์ขนาดใหญ่ที่มีทั้งหมด (ไฟล์ต้องเข้ารหัส PEM)
# หมายเหตุ: ภายใน SSLCACertificatePath คุณต้องมีแฮช symlink
# เพื่อชี้ไปที่ไฟล์ใบรับรอง ใช้ที่ให้มา
# Makefile เพื่ออัปเดตแฮช symlink หลังจากการเปลี่ยนแปลง
#SSLCACertificatePath /etc/ssl/certs/
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
# รายการเพิกถอนใบรับรอง (CRL):
# กำหนดเส้นทางการเพิกถอน CA ที่จะค้นหา CA CRL สำหรับลูกค้า
# การรับรองความถูกต้องหรืออีกทางเลือกหนึ่งคือไฟล์ขนาดใหญ่ที่มีทั้งหมด
# ของพวกเขา (ไฟล์ต้องเข้ารหัส PEM)
# หมายเหตุ: ภายใน SSCARevocationPath คุณต้องมีแฮช symlink
# เพื่อชี้ไปที่ไฟล์ใบรับรอง ใช้ที่ให้มา
# Makefile เพื่ออัปเดตแฮช symlink หลังจากการเปลี่ยนแปลง
#SSLCARevocationPath /etc/apache2/ssl.crl/
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
# การรับรองความถูกต้องไคลเอนต์ (ประเภท):
# ประเภทการตรวจสอบใบรับรองไคลเอ็นต์และความลึก ประเภทได้แก่
# ไม่มี, ไม่บังคับ, ต้องการ และ option_no_ca ความลึกคือ
# หมายเลขที่ระบุความลึกในการตรวจสอบใบรับรอง
# ห่วงโซ่ผู้ออกก่อนที่จะตัดสินว่าใบรับรองไม่ถูกต้อง
#SSLVerifyClient ต้องการ
#SSLVerifyความลึก 10
# ตัวเลือกเครื่องยนต์ SSL:
# ตั้งค่าตัวเลือกต่างๆสำหรับเครื่องยนต์ SSL
# o FakeBasicAuth:
# แปลไคลเอ็นต์ X.509 เป็นการอนุญาตขั้นพื้นฐาน นี่หมายความว่า
# สามารถใช้เมธอด Auth/DBMAuth มาตรฐานสำหรับการควบคุมการเข้าถึงได้ เดอะ
ชื่อผู้ใช้ # เป็นเวอร์ชัน `หนึ่งบรรทัด' ของใบรับรอง X.509 ของไคลเอ็นต์
# โปรดทราบว่าไม่ได้รับรหัสผ่านจากผู้ใช้ ทุกรายการในผู้ใช้
# ไฟล์ต้องการรหัสผ่านนี้: `xxj31ZMTZzkVA'
# o ส่งออกใบรับรองข้อมูล:
# สิ่งนี้ส่งออกตัวแปรสภาพแวดล้อมเพิ่มเติมสองตัว: SSL_CLIENT_CERT และ
# SSL_SERVER_CERT เหล่านี้ประกอบด้วยใบรับรองที่เข้ารหัส PEM ของ
# เซิร์ฟเวอร์ (มีอยู่เสมอ) และไคลเอนต์ (มีอยู่เฉพาะเมื่อไคลเอนต์
# ใช้การรับรองความถูกต้อง) สามารถใช้นำเข้าใบรับรองได้
# เป็นสคริปต์ CGI
# o StdEnvVars:
# สิ่งนี้ส่งออกตัวแปรสภาพแวดล้อม `SSL_*' ที่เกี่ยวข้องกับ SSL/TLS มาตรฐาน
# ตามค่าเริ่มต้น การส่งออกนี้ถูกปิดเนื่องจากเหตุผลด้านประสิทธิภาพ
# เนื่องจากขั้นตอนการสกัดเป็นการดำเนินการที่มีราคาแพงและโดยปกติแล้ว
# ไม่มีประโยชน์สำหรับการให้บริการเนื้อหาคงที่ ดังนั้นจึงมักจะเปิดใช้งาน
# การส่งออกสำหรับคำขอ CGI และ SSI เท่านั้น
# o เลือกเจรจาใหม่:
# สิ่งนี้เปิดใช้งานการจัดการการเจรจาต่อรองการเชื่อมต่อ SSL ที่ปรับให้เหมาะสมเมื่อ SSL
# คำสั่งใช้ในบริบทต่อไดเรกทอรี
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<ไดเรกทอรี /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</ไดเร็กทอรี>
# การปรับโปรโตคอล SSL:
# การปิดระบบที่ปลอดภัยและเป็นค่าเริ่มต้น แต่ยังคงเป็นไปตามมาตรฐาน SSL/TLS
# วิธีคือ mod_ssl ส่งการแจ้งเตือนการปิด แต่ไม่รอ
# ปิดการแจ้งเตือนจากลูกค้า เมื่อคุณต้องการปิดเครื่องอื่น
# วิธีการ คุณสามารถใช้หนึ่งในตัวแปรต่อไปนี้:
# o ssl-ไม่สะอาด-ปิด:
# สิ่งนี้บังคับให้ปิดเครื่องที่ไม่สะอาดเมื่อปิดการเชื่อมต่อ เช่น ไม่
# การแจ้งเตือนการปิด SSL ถูกส่งหรืออนุญาตให้ได้รับ สิ่งนี้ฝ่าฝืน
# มาตรฐาน SSL / TLS แต่จำเป็นสำหรับเบราว์เซอร์ที่สมองตาย ใช้
# สิ่งนี้เมื่อคุณได้รับข้อผิดพลาด I/O เนื่องจากแนวทางมาตรฐานโดยที่
# mod_ssl ส่งการแจ้งเตือนปิด
# o ssl-ถูกต้องปิด:
# สิ่งนี้บังคับให้ปิดเครื่องอย่างถูกต้องเมื่อปิดการเชื่อมต่อ เช่น
# การแจ้งเตือนการปิด SSL ถูกส่งและ mod_ssl รอการแจ้งเตือนการปิด
#แจ้งเตือนลูกค้า. เป็นไปตามมาตรฐาน SSL/TLS 100% แต่ใน
การฝึกฝน # มักจะทำให้เกิดการเชื่อมต่อกับเบราว์เซอร์ที่สมองตาย ใช้
# นี้สำหรับเบราว์เซอร์ที่คุณรู้ว่ามีการใช้ SSL เท่านั้น
#ทำงานถูกต้อง
# ข้อสังเกต: ปัญหาส่วนใหญ่ของไคลเอนต์ที่เสียยังเกี่ยวข้องกับ HTTP
# สิ่งอำนวยความสะดวกในการช่วยชีวิต ดังนั้นคุณมักจะต้องการปิดการใช้งานเพิ่มเติม
#รักษาชีวิตสำหรับลูกค้าเหล่านั้นด้วย ใช้ตัวแปร "nokeepalive" สำหรับสิ่งนี้
# ในทำนองเดียวกัน เราต้องบังคับให้ลูกค้าบางรายใช้ HTTP/1.0 เพื่อแก้ปัญหา
# การใช้งาน HTTP/1.1 ที่เสียหาย ใช้ตัวแปร "downgrade-1.0" และ
# "force-response-1.0" สำหรับสิ่งนี้
# BrowserMatch "MSIE [2-6]" \
# nokeepalive ssl-ไม่สะอาด-ปิด \
# ปรับลด -1.0 บังคับให้ตอบสนอง -1.0
</เวอร์ชวลโฮสต์>
</หากโมดูล>
# เป็นกลุ่ม: ไวยากรณ์=apache ts=4 sw=4 sts=4 sr noet
dev.example.de & cloud.example.de มีใบรับรอง wildcard ssl และเปลี่ยนทั้งไดเรกทอรีเป็น html??
ป้อนคำอธิบายรูปภาพที่นี่
สิ่งเดียวกันนี้เกิดขึ้นเมื่อฉันใช้สิ่งนี้:
ป้อนคำอธิบายรูปภาพที่นี่