گواهی شب قبل را نصب می‌کنیم و تفاوت انتخاب گواهی با انتخاب سایت را می‌سنجیم. نتیجه باید HTTPS معتبر برای نام سایت باشد، با شکست مشخص برای نام اشتباه.

این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نام‌ها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.

محیط: www.key، www.crt و ca.crt شب یازدهم در پوشهٔ کاربر وب‌سرور؛ ماژول ssl فعال.

نصب کلید و میزبان TLS#

sudo install -d -m 750 /etc/apache-lab/tls
sudo install -m 600 ~/apache-lab/pki/www.key /etc/apache-lab/tls/www.key
sudo install -m 644 ~/apache-lab/pki/www.crt /etc/apache-lab/tls/www.crt
sudo install -m 644 ~/apache-lab/pki/ca.crt /etc/apache-lab/tls/ca.crt

در Debian/Ubuntu sudo a2enmod ssl را اجرا کن. در RHEL بستهٔ mod_ssl نصب شده؛ برای مسیر جدید یک نگاشت cert_t با semanage fcontext -a -t cert_t '/etc/apache-lab/tls(/.*)?' بساز و restorecon -Rv /etc/apache-lab/tls را با sudo اجرا کن.

بلوک زیر را به فایل سایت www اضافه کن؛ بلوک HTTP فعلی فعلاً باقی می‌ماند:

<VirtualHost *:443>
    ServerName www.example.test
    DocumentRoot /var/www/apache-lab/public
    SSLEngine on
    SSLCertificateFile /etc/apache-lab/tls/www.crt
    SSLCertificateKeyFile /etc/apache-lab/tls/www.key
    <Directory /var/www/apache-lab/public>
        Options -Indexes -Includes -ExecCGI
        AllowOverride None
        Require all granted
    </Directory>
    ErrorLog /var/log/apache2/www-error.log
    CustomLog /var/log/apache2/www-access.log combined
</VirtualHost>

مسیر لاگ RHEL را تغییر بده. وجود یک Listen 443 کافی است؛ آن را دوباره اضافه نکن. در RHEL بلوک VirtualHost پیش‌فرض ssl.conf را با backup حذف یا غیرفعال کن و تنظیمات global آن را حفظ کن. -S باید ترتیب میزبان‌ها را تأیید کند.

آزمون هویت#

از کلاینت و با ca.crt محلی:

curl --cacert ~/apache-lab/pki/ca.crt \
  --resolve www.example.test:443:192.168.56.10 https://www.example.test/
openssl s_client -connect 192.168.56.10:443 -servername www.example.test \
  -verify_hostname www.example.test -CAfile ~/apache-lab/pki/ca.crt \
  -verify_return_error </dev/null

SNI نام سرویس را هنگام TLS می‌فرستد؛ Host پس از TLS در HTTP می‌آید. نام اشتباه یا CA نپذیرفته باید شکست بخورد. برای RHEL IP .30 را جایگزین کن. هیچ‌کدام با -k اصلاح نمی‌شوند.

بازگشت: بلوک TLS و فایل‌های نسخهٔ سالم را بازیابی، نحو را بررسی و reload کن. داشتن یک HTTPS پیش‌فرض با نام درست، مجوز ورود به برنامه ایجاد نمی‌کند.

منبع: راهنمای TLS در Apache ، VirtualHost و SNI .