Во второй части мы обсудим рекомендуемые настройки mod_ssl, нацеленные на получение максимальной безопасности и оптимальной производительности. Кроме того, читатель узнает, как создать локальный Certification Authority и SSL-сертификат, используя OpenSSL библиотеку с открытым кодом.
Автор Artur Maj
В первой статье этого цикла мы рассказали как правильно устанавливать настраивать и устранять неисправности Apache 2.0 с поддержкой SSL/TLS. Во второй части мы обсудим рекомендуемые настройки mod_ssl, нацеленные на получение максимальной безопасности и оптимальной производительности. Кроме того, читатель узнает, как создать локальный Certification Authority и SSL-сертификат, используя OpenSSL библиотеку с открытым кодом.
В Apache 2.0.52 существует более 30 директив, используемых для настройки mod_ssl. Подробное описание их всех можно найти в Apache's mod_ssl documentation. В этом разделе рассмотрим только рекомендуемые настройки, которые влияют на безопасность или производительность SSL/TLS соединений.
Листинг этих настроек показан в Таблице 1.
Директива (ы) | Рекомендуемая настройка или комментарий |
SSLEngine | Должна быть включена, иначе главный сервер (или виртуальный хост) не будет поддерживать SSL/TLS. |
SSLRequireSSL | Должна быть включена, иначе пользователи смогут получать доступ к веб-контенту через обычные HTTP-запросы, в обход SSL/TLS. |
SSLProtocol
SSLProxyProtocol |
Следует настроить на использование только TLS v1.0 и SSL v3.0. Большинство новых веб-браузеров поддерживают оба протокола, т.е. мы можем уверенно отключить SSL v2.0. |
SSLCipherSuite
SSLProxyCipherSuite |
Для обеспечения сильной криптографии этот параметр следует установить в режим HIGH (>168 бит) и MEDIUM (128 бит). LOW (<56 бит) и NULL (без шифрования) следует отключить. Кроме того, рекомендуется отключить все алгоритмы шифрования, которые поддерживают анонимную аутентификацию (aNULL). Опционально, если мы хотим обеспечить работоспособность браузеров, которые не справляются с сильным шифрованием, нам следует включить EXPORT (56-битный и 40-битный) алгоритм шифрования. Последнее, что нужно поправить, это предпочтительное использование SHA1 перед MD5. Итак, рекомендуемые настройки могут выглядеть следующим образом:
HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM Мы можем просмотреть какие алгоритмы шифрования поддерживают предполагаемые настройки: openssl ciphers -v 'HIGH:MEDIUM:\!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM' |
SSLOptions | Опции "+StrictRequire" следует установить, иначе директива "Satisfy Any" может позволить получить доступ к веб-контенту, даже если не используется SL/TLS. |
SSLRandomSeed | Для запуска Apache следует установить в режим использования псевдо случайного устройства (/dev/urandom) и/или EGD (Entrophy Gathering Daemon). Перед установкой каждого нового SSL-соединения, оно должно быть сконфигурировано на использование встроенного источника, /dev/urandom или EGD. Не рекомендуется использовать /dev/random в обоих случаях. |
SSLSessionCache | Во избежание повторяющихся SSL «рукопожатий» для параллельный HTTP запросов (например, когда веб браузер загружает несколько картинок одновременно), должно быть разрешено SSL кэширование. Стоит установить режим совместного использования памяти (SHM - shared memory) или DBM. Если установить значение в "none", производительность веб-сервера резко снизится. |
SSLSessionCacheTimeout | Это значение указывает - сколько секунд должно пройти до истечения SSLSessionCache. Следует поставить хотя бы 300-600 секунд. Однако в действительности это время должно зависеть от того, сколько времени пользователи находятся на веб-сервере. К примеру, максимальное время – 15 минут, тогда как значение должно быть выставлено в 900 (15 минут * 60 секунд). |
SSLVerifyClient
SSLProxyVerify |
Без использования аутентификации клиента или прокси, этим опциям следует присвоить значение "none". Никогда не устанавливайте значение "optional_no_ca", т.к. это будет противоречить идее PKI аутентификации, когда для аутентификации клиента должен присутствовать только нормальный сертификат. Можно выбрать "optional" (зависит от индивидуальных потребностей), но возможны глюки с некоторыми веб браузерами. |
SSLVerifyDepth
SSLProxyVerifyDepth |
Должно содержать максимальное число промежуточных CA. Например, для принятия только самоподписанных сертификатов, подписанных root’ом CA – должно быть 1. И так далее. |
SSLProxyEngine | Следует отключить, если не используется SSL/TLS прокси-механизм. |
Table 1. Рекомендуемые настройки mod_ssl.
Вот наш пример настоек в httpd.conf, следую рекомендациям выше:
SSLEngine on
SSLOptions +StrictRequire
<Directory />
SSLRequireSSL
</Directory>
SSLProtocol -all +TLSv1 +SSLv3
# Support only for strong cryptography
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
# Support for strong and export cryptography
# SSLCipherSuite HIGH:MEDIUM:EXP:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM:+EXP
SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect file:/dev/urandom 1024
SSLSessionCache shm:/usr/local/apache2/logs/ssl_cache_shm
SSLSessionCacheTimeout 600
SSLVerify none
SSLProxyEngine off
Как дополнение к вышеупомянутым директивам mod_ssl, существуют еще две очень важные директивы от других модулей Apache (mod_log_config и mod_set_envif), которые нужно настроить, как показано в Таблице 2.
Директива (ы) | Рекомендуемая настройка или комментарий |
CustomLog | Чтобы вести логи об SSL параметрах (рекомендуемый минимум: версия протокола и выбранный алгоритм шифрования), нам следует использовать следующее значение:CustomLog logs/ssl_request_log \ "%t %h %{HTTPS}x %{SSL_PROTOCOL}x %{SSL_CIPHER}x %{SSL_CIPHER_USEKEYSIZE}x %{SSL_CLIENT_VERIFY}x \"%r\" %b" |
Setenvif | Для обеспечения совместимости со старыми версиями MS Internet Explorer, в котором имеются ошибки в осуществлении SSL (например, проблемы с функцией поддержки соединения, HTTP/1.1 через SSL, и закрытие SSL-сообщений при закрытии соединений сокета), ставим следующие параметры:SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 Выше описанная опция приведет к тому, что веб-сервер не будет использовать ни HTTP/1.1, ни поддержку соединений, не будет посылать SSL-сообщение о закрытии, если веб-браузер MS Internet Explorer. |
Table 2. Рекомендуемы настройки mod_log и mod_set_envif.
Пример конфигурационного файла (httpd.conf), представленного в предыдущей статье уже включает настройки, приведенные выше.
Итак, нам удалось настроить и протестировать SSL/TLS, но веб-браузер не смог проверить подлинность веб-сервера. В первой статье мы использовали сертификат веб-сервера, созданного только в целях тестирования и не содержащего информацию, требуемую для настоящей аутентификации и коммерческих транзакций.
Для того чтобы браузер смог успешно аутентифицировать веб-сервер, мы должны создать нормальный соответствующий сертификат веб-сервера, который будет содержать:
Стоит отметить, что атрибут общее имя (Common Name CN) должен иметь значение, равное доменному имени сервера (Fully Qualified Domain Name FQDN). Иначе браузерам не удастся определить принадлежность сертификата веб-серверу, на котором присутствует наш сертификат.
Пример сертификата веб-сервера (текстовая репродукция):
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: O=Seccure, OU=Seccure Root CA
Validity
Not Before: Nov 28 01:00:20 2004 GMT
Not After : Nov 28 01:00:20 2005 GMT
Subject: O=Seccure, OU=Seccure Labs, CN=www.seccure.lab
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c1:19:c7:38:f4:89:91:27:a2:1b:1d:b6:8d:91:
48:63:0e:3d:0d:2e:f8:65:45:56:db:98:4d:11:21:
01:ac:81:8e:3f:64:4a:8a:3f:21:15:ca:49:6e:64:
5c:5d:a2:ab:5a:48:cb:2a:9f:0c:02:b9:ff:52:f6:
d9:39:6d:a3:4a:94:41:f9:e9:ab:f0:42:fb:68:9a:
4b:53:41:e7:4f:b0:2b:02:d7:92:a2:2b:02:a2:f9:
f1:2d:68:fa:50:01:2f:49:c1:28:2f:a8:c6:6d:6d:
ab:1d:b9:bd:c9:80:63:f1:d6:22:19:de:2d:4a:43:
50:76:79:7e:a5:5a:75:af:19
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
X509v3 Key Usage:
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication, Netscape Server Gated Crypto,
Microsoft Server Gated Crypto
Netscape Comment:
OpenSSL Certificate for SSL Web Server
Signature Algorithm: sha1WithRSAEncryption
45:30:9d:04:0e:b7:86:9e:61:a1:b0:68:2b:44:93:1c:57:2a:
99:42:bb:16:b1:ab:f5:c0:d2:33:12:c8:d3:1d:2b:bb:6b:9a:
4c:c7:53:bc:e4:88:ef:1e:c3:37:ed:53:2c:15:cf:b8:90:df:
df:4b:34:b8:db:cc:23:77:46:06:72:9d:43:60:a8:a2:ed:0a:
bb:1a:a4:e8:4e:ba:66:93:63:74:87:fd:43:48:b6:93:a2:e3:
3d:da:1b:64:46:35:88:b4:4b:22:e6:3c:84:70:5d:88:dd:64:
c2:51:c2:d6:59:80:87:bc:bd:7f:e3:c1:45:7e:c0:5f:9c:ca:
e1:a1
Примеры, представленные в последующих разделах статьи основаны на значениях, показанных в Таблице 3. Для создания соответствующих сертификатов читателю потребуется изменить эти значения на название их собственной компании или организации.
Описание атрибута |
Атрибут |
Пример значения |
Код страны - Country code (two letters) | C | C = PL |
Штат или регион - State or Province | S | S = mazowieckie |
Расположение - Location | L | L = Warsaw |
Название организации - Organization Name | O | O = Seccure |
Название службы организации - Organization Unit | OU | OU = Seccure Labs |
Общее имя - Common Name | CN | CN = www.seccure.lab |
Table 3. Примеры значений сертификата.
Перед созданием сертификатов важно понять причастность парольной фразы. Следует ли шифровать закрытый ключ или нет? Существует много мнений, но рекомендуется не защищать закрытый ключ веб-сервера с использованием парольной фразы. Это не только неудобно, но и представляет собой лишь мираж безопасности. Почему? Рассмотрим эти точки зрения:
Таким образом, в шифровании закрытого ключа сервера существует только одно преимущество – парольная фраза поможет сохранить закрытый ключ от бездарных скрипт-киддисов, но не от профессионалов, способных получить root доступ к серверу.
Теперь мы можем создать сертификат нашего веб-сервера. Вообще, существует три типа сертификатов, которые мы можем использовать:
Следующие разделы подробно описывают способы создания этих сертификатов. Конечный результат любого способа будет всего в двух файлах:
Этот способ стоит использовать только для продолжения нашего тестирования, или для использования в малых, закрытых условиях (малые корпоративные сети). Чтобы веб-браузеры могли аутентифицировать веб-сервер, самоподписанные сертификаты должны быть инсталлированы в каждый веб-браузер. Это может быть довольно таки неудобно.
Закрытый/открытый ключ и самоподписанный РЕМ-зашифрованный сертификат создаются следующим образом:
openssl req \ -new \ -x509 \ -days 365 \ -sha1 \ -newkey rsa:1024 \ -nodes \ -keyout server.key \ -out server.crt \ -subj '/O=Seccure/OU=Seccure Labs/CN=www.seccure.lab'
При помощи этих команд выполняются следующие действия: создание нового (-new) сертификата (-x509), который будет действителен в течение года (-days 365) и будет подписан с использованием алгоритма SHA1 (-sha1). Закрытый ключ RSA будет иметь длину 1024 бит (-newkey rsa:1024), и не будет защищен парольной фразой (-nodes). Сертификат и закрытый/открытый ключи будут созданы в файлах "server.crt" и "server.key" (-out server.crt -keyout server.key). Параметр "-subj" говорит о том, что название компании "Seccure" (O=Seccure), название службы "Seccure Labs", и полностью определенное доменное имя "www.seccure.lab".
После создания этого сертификата мы должны установить его в каждый веб-браузер, который будет являться потенциальным клиентом нашего сервера. Иначе, веб-браузеры, отправляющие запрос на соединение нашему серверу, не смогут проверить его подлинность. Для Windows среды это будет выглядеть следующим образом:
Рисунок 1. Установка самоподписанного сертификата на машину клиента.
Создание запроса на сертификат и подписка его доверенным CA (таким как Thawte, RSA и др.) наиболее рекомендуемое дальнейшее действие, если вы хотите открыть публичный доступ к вашему сайту из Интернет. При использовании этого метода отпадает необходимость в установке сертификатов в каждый веб-браузер, ведь большинство из них уже имеют в установке несколько сертификатов от доверенных CA.
Не забывайте, что каждый СА имеет разные ограничение на атрибут DN, поэтому читателю стоит заранее ознакомиться с ними. Рекомендуется также выбирать такие сертификаты, которые установлены в большинстве веб браузеров (Thawte, Verisign и некоторые другие). Иначе, у веб-браузера пользователя возникнут проблемы с аутентификацией веб-сервера.
Процесс получения подписанного сертификата от доверенного СА состоит из следующих шагов:
openssl req \ -new \ -sha1 \ -newkey rsa:1024 \ -nodes \ -keyout server.key \ -out request.pem \ -subj '/O=Seccure/OU=Seccure Labs/CN=www.seccure.lab'
2. Теперь мы должны послать запрос на получение сертификата (request.pem) в СА и дождаться, пока он будет подписан и отослан обратно в виде сертификата.
3. После получения сертификата от доверенного СА мы должны удостовериться в том, что он закодирован в формате PEM, а не TXT или DER. Если же полученный сертификат не соответствует формату РЕМ, то мы должны конвертировать его, в каком бы формате он не пришел.
Самый простой способ проверить формат сертификата это просмотреть его в текстовом редакторе. В зависимости от того, как выглядит сертификат, он может быть в одном из следующих форматов (типичные расширения файлов представлены в скобках):
-----BEGIN CERTIFICATE----- MIICdzCCAeCgAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMRAwDgYDVQQKEwdTZWNj dXJlMRgwFgYDVQQLEw9TZWNjdXJlIFJvb3QgQ0EwHhcNMDQxMTI4MDEwMDIwWhcN ... ou0Kuxqk6E66ZpNjdIf9Q0i2k6LjPdobZEY1iLRLIuY8hHBdiN1kwlHC1lmAh7y9 f+PBRX7AX5zK4aE= -----END CERTIFICATE-----
Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: O=Seccure, OU=Seccure Root CA ... RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c1:19:c7:38:f4:89:91:27:a2:1b:1d:b6:8d:91: ... X509v3 extensions: X509v3 Basic Constraints: CA:FALSE ... -----BEGIN CERTIFICATE----- MIICdzCCAeCgAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMRAwDgYDVQQKEwdTZWNj dXJlMRgwFgYDVQQLEw9TZWNjdXJlIFJvb3QgQ0EwHhcNMDQxMTI4MDEwMDIwWhcN ... ou0Kuxqk6E66ZpNjdIf9Q0i2k6LjPdobZEY1iLRLIuY8hHBdiN1kwlHC1lmAh7y9 f+PBRX7AX5zK4aE= -----END CERTIFICATE-----
Команда для конвертирования формата TXT + PEM в РЕМ:
openssl x509 -in signed_cert.pem -out server.crt
[Нетекстовое, двоичное представление]
Команда для преобразования формата DER в РЕМ:
openssl x509 -in signed_cert.der -inform DER -out server.crt
Перед установкой сертификата мы должны проверить, действительно ли он законный и может быть использован в целях аутентификации веб-ервера:
openssl verify -CAfile /path/to/trusted_ca.crt -purpose sslserver server.crt
Кроме того, было бы неплохо убедиться в том, что наш сертификат соответствует ранее созданному закрытому ключу (результаты выполнения обеих команд должны быть одинаковыми):
openssl x509 -noout -modulus -in server.crt | openssl sha1 openssl rsa -noout -modulus -in server.key | openssl sha1
Этот метод может быть использован в интрасетях или в организациях, которые используют или планируют использовать собственный СА. В этом случае местный сертификат СА должен быть установлен на все веб-браузеры, которые будут соединяться с защищенным веб-сервером.
Для использования этого способа нам нужно создать локальный закрытый/открытый ключ СА, также как и сертификат и репозиторий СА для новых ключей.
Примечание: Локальный СА должен быть создан на отдельном сервере, который не имеет соединения с сетью. Операционная система должна давать доступ только авторизованному персоналу, а сама машина должна быть под охраной. Закрытый СА ключ – самый важный элемент всей системы PKI – если он будет компрометирован, то все другие сертификаты, подписанные этим СА также будут компрометированы!
Для установки среды мы будет использовать библиотеку OpenSSL. Понятно, что если у нас уже есть локальный СА, мы можем пропустить этот раздел и продолжить создание запроса на сертификат для веб-сервера.
export SSLDIR=$HOME/ca mkdir $SSLDIR mkdir $SSLDIR/certs mkdir $SSLDIR/crl mkdir $SSLDIR/newcerts mkdir $SSLDIR/private mkdir $SSLDIR/requests touch $SSLDIR/index.txt echo "01" > $SSLDIR/serial chmod 700 $SSLDIR
# ================================================= # OpenSSL configuration file # ================================================= RANDFILE = $ENV::SSLDIR/.rnd [ ca ] default_ca = CA_default [ CA_default ] dir = $ENV::SSLDIR certs = $dir/certs new_certs_dir = $dir/newcerts crl_dir = $dir/crl database = $dir/index.txt private_key = $dir/private/ca.key certificate = $dir/ca.crt serial = $dir/serial crl = $dir/crl.pem RANDFILE = $dir/private/.rand default_days = 365 default_crl_days = 30 default_md = sha1 preserve = no policy = policy_anything name_opt = ca_default cert_opt = ca_default [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 1024 default_md = sha1 default_keyfile = privkey.pem distinguished_name = req_distinguished_name x509_extensions = v3_ca string_mask = nombstr [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, YOUR name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ usr_cert ] basicConstraints = CA:FALSE # nsCaRevocationUrl = https://url-to-exposed-clr-list/crl.pem [ ssl_server ] basicConstraints = CA:FALSE nsCertType = server keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth, nsSGC, msSGC nsComment = "OpenSSL Certificate for SSL Web Server" [ ssl_client ] basicConstraints = CA:FALSE nsCertType = client keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = clientAuth nsComment = "OpenSSL Certificate for SSL Client" [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ v3_ca ] basicConstraints = critical, CA:true, pathlen:0 nsCertType = sslCA keyUsage = cRLSign, keyCertSign extendedKeyUsage = serverAuth, clientAuth nsComment = "OpenSSL CA Certificate" [ crl_ext ] basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment nsComment = "OpenSSL generated CRL"
openssl req \ -config $SSLDIR/openssl.cnf \ -new \ -x509 \ -days 3652 \ -sha1 \ -newkey rsa:1024 \ -keyout $SSLDIR/private/ca.key \ -out $SSLDIR/ca.crt \ -subj '/O=Seccure/OU=Seccure Root CA'
Для закрытого СА ключа следует придумать парольную фразу, которую трудно подобрать и она должна быть нормальной большее количество времени, чем обычные сертификаты (обычно от 10 до 30 лет или больше).
Сертификат СА "ca.crt" следует выложить в открытый доступ на веб-страницах интрасети и установить в каждый веб-браузер, которому он может понадобиться. Ниже показан пример установленного в Internet Explorer сертификата.
Рисунок 2. Пример корневого CA сертификата, установленного в Internet Explorer.
Теперь мы можем использовать наш локальный СА для подписания/аннулирования сертификатов. Для создания сертификата веб-сервера нужно следовать следующим шагам:
openssl req \ -new \ -sha1 \ -newkey rsa:1024 \ -nodes \ -keyout server.key \ -out request.pem \ -subj '/O=Seccure/OU=Seccure Labs/CN=www.seccure.lab'
openssl ca \ -config $SSLDIR/openssl.cnf \ -policy policy_anything \ -extensions ssl_server \ -out $SSLDIR/requests/signed.pem \ -infiles $SSLDIR/requests/request.pem
4. Результатом этих команд будет подписанный сертификат (signed.pem) , который будет находится в директории $SSLDIR/newcerts, и в файле $SSLDIR/signed.pem. Он состоит сразу из TXT и PEM представлении сертификата. Так как Apache ожидает усеченный вариант в формате PEM , мы конвертируем его:
openssl x509 \ -in $SSLDIR/requests/signed.pem \ -out $SSLDIR/requests/server.crt
Теперь сертификат готов к использованию.
Для местных СА в случае компрометации сертификата строго рекомендуется аннулировать сертификат и информировать пользователей о том, что сертификат больше не действителен. Для аннулирования сертификата мы должны отыскать его серийный номер в файле $SSLDIR/index.txt. Далее выполняем следующие команды:
openssl ca \ -config $SSLDIR/openssl.cnf \ -revoke $SSLDIR/newcerts/.pem
Для создания CRL (Certificate Revocation List – Список Аннулированных Сертификатов) файла, делаем следующее:
openssl ca -config $SSLDIR/openssl.cnf -gencrl -crlexts crl_ext -md sha1 -out $SSLDIR/crl.pem
Этот файл должен быть опубликован на сайте СА и/или предоставлен пользователям иным способом. В процессе распространения CRL’ов также рекомендуется использовать Online Certificate Status Protocol (OCSP). Более подробную информацию можно найти в RFC 2560.
Заметьте, что некоторые браузеры (включая Firefox) принимают CRL’ы только в формате DER, поэтому для установки сертификатов в эти браузеры потребуется конвертировать файл crl.pem:
openssl crl \ -in $SSLDIR/crl.pem \ -out $SSLDIR/revoke_certs.crl \ -outform DER
Кроме того, чтобы браузер проверял - не аннулирован ли сертификат веб-сервера, нужно установить опцию "Check for server certificate revocation" (Проверять аннулирование сертификатов серверов). Пример для MS Internet Explorer:
Рисунок 3. Настройка Internet Explorer на проверку аннулирования сертификатов.
Рисунок 4. Реакция Internet Explorer на аннулированный сертификат.
Теперь можно продолжить установку закрытого ключа веб-сервера (server.key) и самого сертификата (server.crt) в среду Apache:
install -m 600 -o root -g sys server.key /usr/local/apache2/conf/ssl.key/ install -m 644 -o root -g sys server.crt /usr/local/apache2/conf/ssl.crt/
Следует проверить, что директивы в конфигурации Apache ссылаются именно на файлы, указанные выше (в httpd.conf):
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
Наконец, перезапускаем Apache и изменения вступают в силу:
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
Проверим, работает ли SSL веб-сайт и могут ли браузеры аутентифицировать веб-сервер. Теперь не должно появиться никаких сообщений:
>Рисунок 5. Безопасное соединение с действующим законным сертификатом.
Во второй части мы рассказали, как настроить mod_ssl и как создать и использовать X.509v3 сертификаты веб сервера. В следующей, третьей и последней части этого цикла статей мы обсудим процесс аутентификации клиентов через сертификаты, а также часты ошибки системных администраторов и известные атаки, которые могут представлять реальную угрозу SSL-соединениям.
Спойлер: мы раскрываем их любимые трюки