<-
Apache > HTTP Server > Documentation > Version 2.0 > SSL/TLS

SSL/TLS Сильное Шифрование: ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

мудрый человек не дает правильные ответы, он излагает правильные вопросы.

-- Клод Леви-Стросс

эта глава - собрание часто задаваемых вопросов (ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ) и соответствующие ответы после популярной традиции USENET. Большинство этих вопросов произошло на Телеконференции comp.infosystems.www.servers.unix или Список адресатов Поддержки mod_ssl modssl-users@modssl.org . они забраны в этом месте, чтобы избежать отвечать на те же самые вопросы много раз.

пожалуйста прочитайте эту главу по крайней мере однажды, устанавливая mod_ssl или по крайней мере ищите вашу проблему здесь перед передачей сообщения о проблеме автору.

top

About The Module

What is the history of mod_ssl?

mod_ssl v1 пакет был первоначально создан в апреле 1998 Ralf S. Engelschall через перенесение Ben Laurie 's Apache-SSL 1.17 источника исправляют для Apacheа 1.2.6 к Apacheу 1.3b6. Из-за конфликтов с развитием Бена Лори периодически повторят это, тогда был повторно собран на пустом месте для Apacheа 1.3.0, сливая старый mod_ssl 1.x с более новыми Apacheскими-SSL 1.18. С этого момента mod_ssl жил его собственной жизнью как mod_ssl v2. Первая публично выпущенная версия была mod_ssl 2.0.0 с 10-ого августа 1998.

после того, как американские экспортные ограничения на шифровальное программное обеспечение были ослаблены, mod_ssl стал частью Apacheского Сервера HTTP с выпуском Apacheского httpd 2.

Is mod_ssl affected by the Wassenaar Arrangement?

сначала, позвольте нам объяснять какой Wassenaar и договоренность относительно Экспортных Средств управления для Обычного Оружия и Товаров Двойного использования и Технологий : Это - международный режим, установленный в 1995, управлять торговлей в обычном оружии и товарах двойного использования и технологии. Это заменяло предыдущее CoCom режим. Дальнейшие детали и относительно Договоренности и относительно ее подписавшихся доступны в http://www.wassenaar.org/ .

короче говоря, цель Договоренности Wassenaar состоит в том, чтобы предотвратить создавание военных способностей, которые угрожают региональной и международной безопасности и стабильности. Договоренность Wassenaar управляет экспортом криптографии как хорошее двойное использование, то есть, кое-что, что имеет и военные и гражданские заявления. Однако, Договоренность Wassenaar также обеспечивает освобождение от экспортных средств управления для программного обеспечения рынка товаров массового производства и свободного программного обеспечения.

в текущем Wassenaar список Двойных Товаров Использования и Технологий И Боеприпасов , под ОБЩЕЕ ПРИМЕЧАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (GSN) это говорит Списки не управляют "программным обеспечением", которое является также: 1. [...] 2. "в общественной области". и под ОПРЕДЕЛЕНИЯ СРОКОВ, ИСПОЛЬЗУЕМЫХ В ЭТИХ СПИСКАХ мы находим в общественной области определенный как "технология" или "программное обеспечение", которое было сделано доступный без ограничений на его дальнейшее распространение. Отметьте: ограничения Авторского права не удаляют "технологию" или "программное обеспечение" от того, чтобы быть "в общественной области".

Так, и mod_ssl и OpenSSL в общественной области в целях Договоренности Wassenaar и список Двойных Товаров Использования и Технологий И Списка Боеприпасов , и таким образом не затронутый в соответствии с его условиями.

top

Installation

Why do I get permission errors related to SSLMutex when I start Apache?

ошибки, типа " mod_ssl: Child could not open SSLMutex lockfile /opt/apache/logs/ssl_mutex.18332 (System error follows) [...] System: Permission denied (errno: 13) "обычно вызываются в соответствии с чрезмерно ограничительными разрешениями на родитель справочники. Удостоверьтесь что все родительские справочники (здесь /opt , /opt/apache и /opt/apache/logs ) имеют набор x-bit для, в минимуме, UID, под которым бегут дети Апача (см. User директива).

Why does mod_ssl stop with the error "Failed to generate temporary 512 bit RSA private key", when I start Apache?

шифровальное программное обеспечение нуждается в источнике непредсказуемых данных, чтобы работать правильно. Операционные системы многого открытого источника обеспечивают "устройство хаотичности", которое удовлетворяет этой цели (обычно называемый /dev/random ). На других системах, заявления должны отобрать Псевдо Случайный Генератор Числа OpenSSL (PRNG) вручную с соответствующими данными перед производством ключей или выполнения общественного ключевого шифрования. На версию 0.9.5, функции OpenSSL, которые нуждаются в хаотичности сообщить об ошибке, если PRNG не был отобран по крайней мере с 128 битами хаотичности.

предотвращать эту ошибку, mod_ssl должен обеспечить достаточно энтропии к PRNG, чтобы позволить этому работать правильно. Это может быть сделано через SSLRandomSeed директивы.

top

Configuration

Is it possible to provide HTTP and HTTPS from the same server?

да. HTTP и HTTPS используют различные порты сервера (HTTP связывает, чтобы держать в строевой стойке 80, HTTPS, чтобы держать в строевой стойке 443), таким образом нет никакого прямого конфликта между ними. Вы можете или управлять двумя отдельными случаями сервера, обязанными в эти порты, или использовать изящное действительное средство оказания гостеприимства Апача, чтобы создать два действительных сервера по одному случаю Apacheа - отвечающий запрос на порту 80 и разговоре HTTP и другие отвечающие запросы на порту 443 разговора HTTPS.

Which port does HTTPS use?

Вы можете управлять HTTPS на любом порту, но стандарты определяют порт 443, который является, где любой послушный браузер HTTPS будет смотреть по умолчанию. Вы можете вынудить ваш браузер наблюдать различный порт, определяя это в URL как это (для порта 666): https://secure.server.dom:666/

How do I speak HTTPS manually for testing purposes?

в то время как Вы обычно только используете

$ telnet localhost 80
GET / HTTP/1.0

для простого испытания Apacheа через HTTP, это не настолько легко для HTTPS из-за протокола SSL между TCP и HTTP. С помощью Опенссла s_client команда, однако, Вы можете сделать подобный чек на HTTPS:

$ openssl s_client -connect localhost:443 -state -debug
GET / HTTP/1.0

перед фактическим ответом HTTP Вы получите подробную информацию о рукопожатии SSL. Для более общего клиента линии команды, который непосредственно понимает и HTTP и HTTPS, может выполнить, ПОЛУЧАЮТ и ОБЪЯВЛЯЮТ операции, может использовать полномочие, диапазоны байта поддержек, и т.д. Вы должны взглянуть на остроту cURL инструмент. Используя это, Вы можете проверить, что Apache отвечает правильно на портах 80 и 443 следующим образом:

$ curl http://localhost/
$ curl https://localhost/

Why does the connection hang when I connect to my SSL-aware Apache server?

поскольку Вы соединились с HTTP с портом HTTPS, то есть Вы использовали URL формы " http:// "вместо" https:// ". Это также случается наоборот, когда Вы соединяетесь через HTTPS с портом HTTP, то есть когда Вы пробуете использовать" https:// "на сервере, который не поддерживает SSL (на этом порту). Удостоверьтесь, что Вы соединяетесь с действительным сервером, который поддерживает SSL, который является вероятно IP, связанным с вашим hostname, не localhost (127.0.0.1).

Why do I get ``Connection Refused'' messages, when trying to access my newly installed Apache+mod_ssl server via HTTPS?

это может случиться по различным причинам. Самые общие ошибки включают стартового Apacheа с только apachectl start (или httpd ) вместо apachectl startssl (или httpd -DSSL ). Ваша конфигурация может также быть неправильной. Пожалуйста удостоверьтесь что ваш Listen директивы соответствуют вашему <VirtualHost> директивы. Если все остальное терпит неудачу, пожалуйста начните заново, используя конфигурацию по умолчанию, обеспеченную mod_ssl .

Why are the SSL_XXX variables not available to my CGI & SSI scripts?

пожалуйста удостоверьтесь, что Вы имеете " SSLOptions +StdEnvVars "позволенный для контекста ваших запросов CGI/SSI.

How can I switch between HTTP and HTTPS in relative hyperlinks?

обычно, чтобы переключить между HTTP и HTTPS, Вы должны использовать полностью-компетентный, осуществляет гиперссылку (потому что Вы должны изменить схему URL). Используя mod_rewrite однако, Вы можете управлять родственником, осуществляет гиперссылку, достигать того же самого эффекта.

RewriteEngine on
RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^/(.*):NOSSL$ http://%{SERVER_NAME}/$1 [R,L]

это переписывает ruleset, позволяет Вам использовать, осуществляет гиперссылку из формы <a href="document.html:SSL"> , чтобы переключить к HTTPS в относительную связь.

top

Certificates

What are RSA Private Keys, CSRs and Certificates?

частный ключевой файл RSA - цифровой файл, который Вы можете использовать, чтобы расшифровать сообщения, посланные Вам. Это имеет общественный компонент, который Вы распределяете (через ваш файл Свидетельства), который позволяет людям зашифровать те сообщения к Вам.

Свидетельство, Подписывая Запрос (CSR) - цифровой файл, который содержит ваш общественный ключ и ваше название. Вы посылаете CSR Удостоверению Власти (Калифорния), кто преобразует это в реальное Свидетельство, подписывая это.

Свидетельство содержит ваш общественный ключ RSA, ваше название, название Калифорнии, и в цифровой форме подписано Калифорнией. Браузеры, которые знают Калифорнию, могут проверить подпись на том Свидетельстве, таким образом получая ваш общественный ключ RSA. Это позволяет им послать сообщения, которые только Вы можете расшифровать.

см. Introduction глава для общего описания протокола SSL.

Is there a difference on startup between the original Apache and an SSL-aware Apache?

да. Вообще, стартовый Apache с mod_ssl встроенный точно так же как начинает Apacheа без этого. Однако, если Вы будете иметь passphrase на вашем частном ключевом файле SSL, то диалог запуска выскочит, который просит, чтобы Вы вошли во фразу прохода.

необходимость вручную входить в passphrase, начиная сервер может быть проблематичной - например, начиная сервер с подлинников ботинка системы. В этом случае, Вы можете следовать за шагами below удалять passphrase от вашего частного ключа.

How do I create a self-signed SSL Certificate for testing purposes?

  1. удостоверьтесь, что Опенссл установлен и в вашем PATH .

  2. бежать следующей командой, создавать server.key и server.crt файлы:
    $ openssl req -new -x509 -nodes -out server.crt -keyout server.key
    Они могут использоваться следующим образом в вашем httpd.conf файл:
    SSLCertificateFile/path/to/this/server.crt SSLCertificateKeyFile/path/to/this/server.key 	
    
  3. важно, что Вы знаете что это server.key делает нет иметь любой passphrase. Чтобы добавлять passphrase к ключу, Вы должны управлять следующим команда, и вступает & проверите passphrase согласно просьбе.

    $ openssl rsa -des3 -in server.key -out server.key.new
    $ mv server.key.new server.key

    Пожалуйста сделайте копию server.key файл, и passphrase Вы вступили, в безопасное местоположение.

How do I create a real SSL Certificate?

вот - постепенное описание:

  1. удостоверьтесь, что Опенссл установлен и в вашем PATH .

  2. создать частный ключ RSA для вашего Apacheского сервера (будет Тройное-DES зашифрованный и форматированный PEM):

    $ openssl genrsa -des3 -out server.key 1024

    пожалуйста сделайте копию этого server.key файл и фраза прохода Вы вступили в безопасное местоположение. Вы можете видеть детали этого частного ключа RSA при использовании команды:

    $ openssl rsa -noout -text -in server.key

    в случае необходимости, Вы можете также создать расшифрованную версию PEM (не рекомендованный) этого частного ключа RSA с:

    $ openssl rsa -in server.key -out server.key.unsecure

  3. создать Свидетельство, Подписывая Запрос (CSR) с сервером RSA частный ключ (продукция будет форматированным PEM):

    $ openssl req -new -key server.key -out server.csr

    удостоверьтесь, что Вы входите в FQDN ("Полностью Компетентное Название Области") сервера, когда Опенссл побуждает Вас для "CommonName", то есть когда Вы производите CSR для вебсайта, через который будут позже получать доступ https://www.foo.dom/ , войдите в "www.foo.dom" здесь. Вы можете видеть детали этого CSR при использовании

    $ openssl req -noout -text -in server.csr

  4. Вы теперь должны послать это Свидетельство, Подписывая Запрос (CSR) к Удостоверению Власти (Калифорния), которая будет подписана. Как только CSR был подписан, Вы будете иметь реальное Свидетельство, которое может использоваться Apache. Вы могли подписать CSR коммерческой Калифорнией, или Вы можете создать вашу собственную Калифорнию, чтобы подписать это.
    коммерческая Калифорния обычно просит, чтобы Вы объявили CSR в форму сети, плата за подписание, и затем послали подписанное Свидетельство, которое Вы можете хранить в server.crt файле. За дополнительной информацией о коммерческой Калифорнии см. следующие местоположения:

    1. Verisign
      http://digitalid.verisign.com/server/apacheNotice.htm
    2. Thawte
      http://www.thawte.com/
    3. CertiSign Certificadora Цифровой Ltda.
      http://www.certisign.com.br
    4. IKS GmbH
      http://www.iks-jena.de/leistungen/ca/
    5. Uptime Commerce Ltd.
      http://www.uptimecommerce.com
    6. BelSign NV/SA
      http://www.belsign.be
    для деталей относительно того, как создавать вашу собственную Калифорнию, и использовать это, чтобы подписать CSR, см. below .
    как только ваш CSR был подписан, Вы можете видеть детали Свидетельства следующим образом:

    $ openssl x509 -noout -text -in server.crt
  5. Вы должны теперь иметь два файла: server.key и server.crt . они могут использоваться следующим образом в вашем httpd.conf файл:
    SSLCertificateFile/path/to/this/server.crt SSLCertificateKeyFile/path/to/this/server.key
    
    server.csr файл больше не необходим.

How do I create and use my own Certificate Authority (CA)?

короткий ответ должен использовать CA.sh или CA.pl подлинник, обеспеченный Опенсслом. Если Вы не имеете серьезное основание не к, Вы должны использовать их для предпочтения. Если Вы не можете, Вы мочь создать самоподписанное Свидетельство следующим образом:

  1. создать частный ключ RSA для вашего сервера (будет Тройное-DES зашифрованный и форматированный PEM):

    $ openssl genrsa -des3 -out server.key 1024

    пожалуйста сделайте копию этого host.key файл и фраза прохода Вы вступили в безопасное местоположение. Вы можете видеть детали этого частного ключа RSA при использовании команды:
    $ openssl rsa -noout -text -in server.key

    в случае необходимости, Вы можете также создать расшифрованную версию PEM (не рекомендованный) этого частного ключа RSA с:

    $ openssl rsa -in server.key -out server.key.unsecure

  2. создать самоподписанное Свидетельство (структура X509) с ключом RSA, который Вы только создали (продукция будет форматированным PEM):

    $ openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crt

    это подписывает сервер CSR и приводит к a server.crt файл.
    Вы можете видеть детали этого использования Свидетельства:

    $ openssl x509 -noout -text -in server.crt

How can I change the pass-phrase on my private key file?

Вы просто должны прочитать это со старой фразой прохода и написать это снова, определяя новую фразу прохода. Вы можете достигнуть этого со следующими командами:

$ openssl rsa -des3 -in server.key -out server.key.new
$ mv server.key.new server.key

в первый раз, когда у Вас спрашивают о фразе прохода PEM, Вы должны войти в старую фразу прохода. После этого, Вас будут просить снова войти во фразу прохода - на сей раз, использовать новую фразу прохода. Если Вас будут просить проверить фразу прохода, то Вы будете должны войти в новую фразу прохода во второй раз.

How can I get rid of the pass-phrase dialog at Apache startup time?

причина этот диалог выскочил при запуске и каждом переначале, - то, что частный ключ RSA в вашем server.key файле сохранен в зашифрованном формате для соображений безопасности. Фраза прохода необходима, расшифровывают этот файл, таким образом это может быть прочитано и разобрано. Удаление фразы прохода удаляет слой безопасности от вашего сервера - продолжают предостережение!

  1. удалить шифрование из частного ключа RSA (держа резервные копии оригинального файла):

    $ cp server.key server.key.org
    $ openssl rsa -in server.key.org -out server.key

  2. удостоверьтесь, что server.key файл только удобочитаем корнем:

    $ chmod 400 server.key

теперь server.key содержит незашифрованную копию ключа. Если Вы укажете ваш сервер на этот файл, то это не будет побуждать Вас для фразы прохода. ОДНАКО, если любой получит этот ключ, то они будут в состоянии исполнить роль Вас на сети. ПОЖАЛУЙСТА удостоверьтесь, что разрешения на этом файле - такой, что только коренится, или пользователь сервера сети мог читать, это (предпочтительно заставляют ваш сервер сети начинаться как корень, но бежать как другой пользователь, и иметь ключ, удобочитаемый только корнем).

как альтернативный подход Вы можете использовать " SSLPassPhraseDialog exec:/path/to/program "средство. Примите во внимание, что это ни больше, ни менее безопасно, конечно.

How do I verify that a private key matches its Certificate?

частный ключ содержит ряд чисел. Два из этих чисел формируют "общественный ключ", другие - часть "частного ключа". "Общественные ключевые" биты включены, когда Вы производите CSR, и впоследствии являетесь частью связанного Свидетельства.

чтобы проверять, что общественный ключ в вашем Свидетельстве соответствует общественной части вашего частного ключа, Вы просто должны сравнить эти числа. Рассматривать Свидетельство и ключ управляют командами:

$ openssl x509 -noout -text -in server.crt
$ openssl rsa -noout -text -in server.key

`модуль и `общественный образец' части в ключе и Свидетельстве должны соответствовать. Поскольку общественный образец - обычно 65537, и трудно визуально проверить, что длинные числа модуля - то же самое, Вы можете использовать следующий подход:

$ openssl x509 -noout -modulus -in server.crt | openssl md5
$ openssl rsa -noout -modulus -in server.key | openssl md5

это оставляет Вас с двумя скорее более короткими числами, чтобы сравниться. Это, в теории, возможной, что эти числа могут быть тем же самым, без чисел модуля, являющихся тем же самым, но возможности на это кардинально отдаленны.

если Вы желаете проверить, к какому ключу или удостоверяют специфический CSR, принадлежит, Вы можете выполнить то же самое вычисление на CSR следующим образом:

$ openssl req -noout -modulus -in server.csr | openssl md5

Why do connections fail with an "alert bad certificate" error?

ошибки, типа OpenSSL: error:14094412: SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate в SSL logfile, обычно вызываются браузер, который является неспособным обращаться с сервером certificate/private-key. Например, Навигатор Netscape 3.x неспособен обращаться с ключевыми длинами RSA, не равными 1024 битам.

Why does my 2048-bit private key not work?

частные ключевые размеры для SSL должны быть или 512 или 1024 битами, для совместимости с определенными web-браузерами. keysize 1024 битов рекомендуется, потому что ключи, большие чем 1024 бита несовместимы с некоторыми версиями Навигатора Netscape и Microsoft Internet Explorer, и с другими браузерами, которые используют набор инструментов криптографии RSA BSAFE.

Why is client authentication broken after upgrading from SSLeay version 0.8 to 0.9?

свидетельства Калифорнии под дорожкой Вы формировали с SSLCACertificatePath найдены SSLeay через мешанину symlinks. Эти ценности мешанины произведены ` openssl x509 -noout -hash 'команда. Однако, алгоритм имел обыкновение вычислять мешанину для свидетельства, измененного между SSLeay 0.8 и 0.9. Вы будете должны удалить всю старую мешанину symlinks и создать новые после модернизации. Использование Makefile если mod_ssl .

How can I convert a certificate from PEM to DER format?

формат свидетельства по умолчанию для SSLeay/OpenSSL - PEM, который является просто закодированным DER Base64, с линиями нижней сноски и ударом головой. Для некоторых заявлений (например Microsoft Internet Explorer) Вы нуждаетесь в свидетельстве в простом формате DER. Вы можете преобразовать файл PEM cert.pem в передачу файл DER cert.der использование следующей команды: $ openssl x509 -in cert.pem -out cert.der -outform DER

Why can't I find the getca or getverisign programs mentioned by Verisign, for installing my Verisign certificate?

Verisign никогда не обеспечивал определенные инструкции для Apache+mod_ssl. Предоставленные инструкции - для Цитадели C2Net's (коммерческий Apache базирующийся сервер с поддержкой SSL).

чтобы устанавливать ваше свидетельство, все, что Вы должны сделать, должно спасти свидетельство файлу, и дать название того файла к SSLCertificateFile директива. Вы будете также должны дать этому ключевой файл. За дополнительной информацией, см. SSLCertificateKeyFile директива.

Can I use the Server Gated Cryptography (SGC) facility (aka Verisign Global ID) with mod_ssl?

да. mod_ssl включил поддержку средству SGC начиная с версии 2.1. Никакая специальная конфигурация не требуется - только используют Глобальное удостоверение личности как ваше свидетельство сервера. усилить из клиентов тогда автоматически обработан mod_ssl во времени выполнения.

Why do browsers complain that they cannot verify my Verisign Global ID server certificate?

Веризигн использует промежуточное свидетельство Калифорнии между корнем свидетельство Калифорнии (который установлен в браузерах), и свидетельство сервера (который Вы устанавливали на сервере). Вы должны были получить это дополнительное свидетельство Калифорнии от Веризигна. В противном случае жалуйтесь к ним. Тогда, формируйте это свидетельство с SSLCertificateChainFile директива. Это гарантирует, что промежуточное свидетельство Калифорнии посылают браузеру, заполняя промежуток в цепи свидетельства.

top

The SSL Protocol

Why do I get lots of random SSL protocol errors under heavy server load?

может быть множество причин для этого, но главный - проблемы с Тайником сессии SSL, определенным SSLSessionCache директива. Тайник сессии DBM - наиболее вероятный источник проблемы, таким образом используя тайник сессии ОТМЕТКИ КУРСА КОРАБЛЯ (или никакой тайник вообще) может помочь.

Why does my webserver have a higher load, now that it serves SSL encrypted traffic?

SSL использует сильное шифровальное шифрование, которое требует большого хруста числа. Когда Вы просите webpage через HTTPS, все (даже изображения) зашифровано прежде, чем это передано. Так увеличился, движение HTTPS ведет, чтобы загрузить увеличения.

Why do HTTPS connections to my server sometimes take up to 30 seconds to establish a connection?

это обычно вызывается a /dev/random устройство для SSLRandomSeed который блокирует прочитанный (2) запрос, пока достаточно энтропии не доступно, чтобы обслужить запрос. Больше информации доступно в руководстве ссылки для SSLRandomSeed директива.

What SSL Ciphers are supported by mod_ssl?

обычно, любые шифры SSL, поддержанные версией Опенссла в использовании, также поддержаны mod_ssl . то, какие шифры являются доступными, может зависеть от способа, которым Вы строили Опенссла. Как правило, по крайней мере следующие шифры поддержаны:

  1. RC4 с MD5
  2. RC4 с MD5 (экспортируют версию, ограниченную 40-битовому ключу),
  3. RC2 с MD5
  4. RC2 с MD5 (экспортируют версию, ограниченную 40-битовому ключу),
  5. ИДЕЯ с MD5
  6. DES с MD5
  7. тройной-DES с MD5

чтобы определять фактический список доступных шифров, Вы должны управлять следующим:

$ openssl ciphers -v

Why do I get ``no shared cipher'' errors, when trying to use Anonymous Diffie-Hellman (ADH) ciphers?

по умолчанию, Опенссл делает нет позволить шифры ADH, для соображений безопасности. Пожалуйста убедитесь, что Вы знаете о потенциальных побочных эффектах, если Вы хотите позволять эти шифры.

чтобы использовать Анонимный Diffie-Hellman (ADH) шифры, Вы должны строить Опенссла с " -DSSL_ALLOW_ADH ", и затем добавьте" ADH "в ваш SSLCipherSuite .

Why do I get a 'no shared ciphers' error when connecting to my newly installed server?

любой Вы сделали ошибку с вашим >SSLCipherSuite директива (сравнивают это с предварительно сконфигурированным примером в httpd.conf-dist ) или Вы хотели использовать алгоритмы DSA/DH вместо RSA, когда Вы произвели ваш частный ключ и игнорировали или пропустили предупреждения. Если Вы выбрали DSA/DH, то ваш сервер не может сообщить использованию RSA-базирующиеся шифры SSL (по крайней мере, пока Вы не формируете дополнительную RSA-базирующуюся пару свидетельства/ключа). Современные браузеры как НЕ УТОЧНЕНО или ТО ЕСТЬ могут только общаться по SSL, использующему шифры RSA. Результат не "никакие разделенные шифры" ошибка. Чтобы устанавливать это, восстановите вашу пару свидетельства/ключа сервера, используя алгоритм RSA.

Why can't I use SSL with name-based/non-IP-based virtual hosts?

причина является очень технической, и несколько "цыпленок и яйцо" проблема. Слой протокола SSL остается ниже слоя протокола HTTP и заключает в капсулу HTTP. Когда связь SSL (HTTPS) установлена, Apache/mod_ssl должен договориться о параметрах протокола SSL с клиентом. Для этого, mod_ssl должен консультироваться с конфигурацией действительного сервера (например, это должно искать набор шифра, свидетельство сервера, и т.д.). Но чтобы пойти в правильного действительного Apacheа сервера должен знать Host область удара головой HTTP. Чтобы сделать это, удар головой запроса HTTP должен быть прочитан. Это не может быть сделано прежде, чем рукопожатие SSL закончено, но информация необходима, чтобы закончить фазу рукопожатия SSL. Лото!

Why is it not possible to use Name-Based Virtual Hosting to identify different SSL virtual hosts?

Действительное Оказание гостеприимства на основе названия - очень популярный метод идентификации различных действительных хозяев. Это позволяет Вам использовать тот же самый IP адрес и то же самое число порта для многих различных участков. Когда люди идут дальше к SSL, кажется естественным предположить, что тот же самый метод может использоваться, чтобы иметь много различных действительных хозяев SSL на том же самом сервере.

это прибывает как скорее удар, чтобы узнать, что это невозможно.

причина - то, что протокол SSL является отдельным слоем, который заключает в капсулу протокол HTTP. Таким образом сессия SSL - отдельная сделка, которая имеет место прежде, чем сессия HTTP началась. Сервер получает запрос SSL на IP адресе X и порту Y (обычно 443). Так как запрос SSL не содержит никакого Хозяина: область, сервер не имеет никакого способа решить который действительный хозяин SSL использовать. Обычно, это будет только использовать первый, который это находит, который соответствует порту и IP определенному адресу.

Вы можете, конечно, использовать Действительное Оказание гостеприимства на основе названия, чтобы идентифицировать много non-SSL действительных хозяев (все на порту 80, например) и затем иметь единственного действительного хозяина SSL (на порту 443). Но если Вы делаете это, Вы должны удостовериться, чтобы поместить non-SSL число порта в директиву NameVirtualHost, например.

NameVirtualHost 192.168.1.1:80

другие решения для работы включают:

Используя отдельный IP обращается для различных хозяев SSL. Используя различные числа порта для различных хозяев SSL.

How do I get SSL compression working?

Хотя переговоры сжатия SSL были определены в спецификации SSLv2 и TLS, требуется до мая 2004 для RFC 3749, чтобы определить, ВЫКАЧИВАЮТ как договорный стандартный метод сжатия.

Опенссл 0.9.8 начал поддерживать это по умолчанию когда собрано с zlib выбор. Если и клиент и сервер поддержит сжатие, то это будет использоваться. Однако, большинство клиентов все еще пробует первоначально соединиться с SSLv2 Привет. Поскольку SSLv2 не включал множество предпочтенных алгоритмов сжатия в его рукопожатии, о сжатии нельзя договориться с этими клиентами. Если клиент повреждает поддержку SSLv2, или SSLv3 или TLS Привет можно послать, в зависимости от которого используется библиотека SSL, и сжатие может быть настроено. Вы можете проверить, используют ли клиенты сжатие SSL, регистрируя %{SSL_COMPRESS_METHOD}x переменная.

When I use Basic Authentication over HTTPS the lock icon in Netscape browsers stays unlocked when the dialog pops up. Does this mean the username/password is being sent unencrypted?

нет, имя пользователя/пароль передано зашифрованное. Изображение в браузерах Netscape фактически не синхронизировано со слоем SSL/TLS. Это только пуговицы к запертому государству, когда первая часть фактических webpage данных передана, который может смутить людей. Средство Базовой аутентификации - часть слоя HTTP, который является выше слоя SSL/TLS в HTTPS. Прежде, чем любая передача данных HTTP имеет место в HTTPS, слой SSL/TLS уже закончил его фазу рукопожатия, и переключил к зашифрованной коммуникации. Так что не будьте смущены этим изображением.

Why do I get I/O errors when connecting via HTTPS to an Apache+mod_ssl server with Microsoft Internet Explorer (MSIE)?

первая причина - то, что выполнение SSL в некоторых версиях MSIE имеет немного тонких ошибок, связанных с HTTP, держат - живое средство и SSL близко регистрируют тревоги относительно связи гнезда близко. Дополнительно взаимодействие между SSL и особенностями HTTP/1.1 проблематично в некоторых версиях MSIE. Вы можете работать вокруг этих проблем, вынуждая Apacheа не использовать HTTP/1.1, держать - живые связи или посылать SSL, близко регистрируют сообщения клиентам MSIE. Это может быть сделано при использовании следующей директивы в Том, что вы SSL-знали действительную секцию хозяина:

SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

далее, некоторые версии MSIE имеют проблемы со специфическими шифрами. К сожалению, не возможно осуществить MSIE-определенную работу для этого, потому что шифры необходимы уже фаза рукопожатия SSL. Так MSIE-определенное SetEnvIf не будет решать эти проблемы. Вместо этого Вы должны будете сделать более решительные регуляторы глобальных параметров. Прежде, чем Вы решаете сделать это, удостоверьтесь, что ваши клиенты действительно имеют проблемы. В противном случае не делайте эти изменения - они затронут все ваши клиенты, MSIE или иначе.

следующая проблема состоит в том, что 56bit экспортные версии MSIE 5.x браузеры имеют сломанное выполнение SSLv3, которое взаимодействует ужасно с версиями Опенссла, больше чем 0.9.4. Вы можете принять это и требовать, чтобы ваши клиенты модернизировали их браузеры, Вы можете понизить Опенсслу 0.9.4 (не сообщенный), или Вы можете работать вокруг этого, признавая, что ваша работа затронет другие браузеры также:

SSLProtocol all -SSLv3

будет полностью повреждать протокол SSLv3 и позволять тем браузерам работать. Лучшая работа должна повредить только те шифры, которые вызывают неприятность.

SSLCipherSuite ALL:!ADH: !EXPORT56 :RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

это также позволяет сломанным версиям MSIE работать, но только удаляет более новое 56bit шифры TLS.

другая проблема с MSIE 5.x клиенты - то, что они отказываются соединиться с URL формы https://12.34.56.78/ (где IP адреса используются вместо hostname), если сервер использует Сервер Криптография Gated (SGC) средство. Этого можно только избежать при использовании полностью компетентного названия области (FQDN) вебсайта в, осуществляет гиперссылку взамен, потому что MSIE 5.x имеет ошибку в способе, которым это обращается с переговорами SGC.

и наконец есть версии MSIE, которые, кажется, требуют, чтобы сессия SSL могла многократно использоваться (полностью не приспосабливающее стандарту поведение, конечно). Соединение с теми версиями MSIE только работает, если тайник сессии SSL используется. Так, как работа, удостоверьтесь, что Вы используете тайник сессии (см. SSLSessionCache директива).

Why do I get I/O errors, or the message "Netscape has encountered bad data from the server", when connecting via HTTPS to an Apache+mod_ssl server with Netscape Navigator?

это обычно происходит, когда Вы создали новое свидетельство сервера для данной области, но предварительно сказали вашему браузеру всегда принимать старое свидетельство сервера. Как только Вы очищаете вход для старого свидетельства от вашего браузера, все должно быть прекрасным. Выполнение Netscape SSL правильно, так, когда Вы сталкиваетесь с ошибками ввода / вывода с Навигатором Netscape, это обычно вызывается формируемыми свидетельствами.

top

mod_ssl Support

What information resources are available in case of mod_ssl problems?

следующие информационные ресурсы доступны. В случае проблем Вы должны искать здесь сначала.

ответы в F.A.Q Пользовательского Руководства. Перечислите (это)
http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html
Сначала проверьте F.A.Q. (этот текст). Если ваша проблема - общее один, этому, возможно, ответил несколько раз прежде, и включен в этом докторе.
регистрации от Списка адресатов Поддержки modssl-пользователей http://www.modssl.org/support/
поиск вашей проблемы в архивах списка адресатов modssl-пользователей. Вы - вероятно не первый человек, который имеет эту проблему!

What support contacts are available in case of mod_ssl problems?

следующие списки все возможности поддержки для mod_ssl, в порядке предпочтение. Пожалуйста пройдите эти возможности в этом заказе - только не выбирают тот, из которого Вы любите взгляд.

  1. послать Сообщение о Проблеме Списку адресатов Поддержки modssl-пользователей
    modssl-users@modssl.org
    это - привилегированный способ представить ваше сообщение о проблеме, потому что этот путь, другие могут видеть проблему, и учиться из любых ответов. Вы должны подписаться на список сначала, но Вы можете тогда легко обсудить вашу проблему и с автор и целое mod_ssl пользовательское сообщество.
  2. послать Сообщение о Проблеме Apacheскому httpd Списку адресатов Поддержки Пользователей
    users@httpd.apache.org
    это - второй способ представить ваше сообщение о проблеме. Снова, Вы должны подписаться на список сначала, но Вы можете тогда легко обсудить вашу проблему с целым Apacheским httpd пользовательским сообществом.
  3. написать Сообщение о Проблеме в Базе данных Ошибки
    http://httpd.apache.org/bug_report.html
    это - последний способ представить ваше сообщение о проблеме. Вы должны только сделать это, если Вы уже объявили к спискам адресатов, и не имели никакого успеха. Пожалуйста следуйте за инструкциями на вышеупомянутой странице тщательно .

What information should I provide when writing a bug report?

Вы должны всегда обеспечивать по крайней мере следующую информацию:

Apache и информация версии Опенссла
Apache версия может быть определена, бегущий httpd -v . версия Опенссла может быть определена, бегущий openssl version . альтернативно, если Вам установили Рысь, Вы можете управлять командой lynx -mime_header http://localhost/ | grep Server собирать эту информацию в единственном шаге.
детали на том, как Вы строили и устанавливали Apache+mod_ssl+OpenSSL
для этого Вы можете обеспечить logfile вашей предельной сессии, которая показывает конфигурацию и устанавливать шаги. Если это не возможно, Вы должны по крайней мере обеспечить configure линия команды Вы использовали.
в случае основных свалок пожалуйста включите След
если ваш Apache+mod_ssl+OpenSSL сваливает его ядро, пожалуйста приложите структуру стека "след" (см. below для информации относительно того, как получить это). Без этой информации, не может быть найдена причина для вашей основной свалки
детальное описание вашей проблемы
не смейтесь, мы действительно подразумеваем это! Много сообщений о проблеме не включают описание того, какова фактическая проблема. Без этого, это очень трудно для любого помочь Вам. Так, это находится в вашем собственном интересе (Вы хотите проблему, которая будет решена, не так ли ?), чтобы включить так много деталей насколько возможно, пожалуйста. Конечно, Вы должны все еще включать все предметы первой необходимости выше также.

I had a core dump, can you help me?

вообще не, по крайней мере не, если Вы не обеспечиваете больше деталей о кодовом местоположении где Apacheское сваленное ядро. То, что обычно всегда требуется, чтобы помочь Вам, - след (см. следующий вопрос). Без этой информации главным образом невозможно найти проблему и помочь Вам в установке этого.

How do I get a backtrace, to help find the reason for my core dump?

следующее - шаги, Вы будете должны закончить, получить след:

  1. удостоверьтесь, что Вы имеете символы отладки в наличии, по крайней мере в Apacheе. На платформах, где Вы используете GCC/GDB, Вы должны будете строить Apache+mod_ssl с " OPTIM="-g -ggdb3" "чтобы получить это. На других платформах по крайней мере" OPTIM="-g" "необходим.
  2. начать сервер и пробовать воспроизвести основную свалку. Для этого Вы можете хотеть использовать директиву как " CoreDumpDirectory /tmp "к удостоверьтесь, что файл основной свалки может быть написан. Это должно закончиться в a /tmp/core или /tmp/httpd.core файл. Если Вы не получаете одного из них, пробуйте управлять вашим сервером под некорнем UID. Много современных ядер не позволяют процессу сваливать ядро после того, как это сделало a setuid() (если это не делает exec() ) для соображений безопасности (там можно дать информация привилегию, перенесенная в памяти). В случае необходимости, Вы можете бежать /path/to/httpd -X вручную вынуждать Apacheа не разветвляться.
  3. проанализировать основную свалку. Для этого, управляемый gdb /path/to/httpd /tmp/httpd.core или подобная команда. В GDB, все Вы должны сделать тогда должен вступить bt , и вот, Вы получаете след. Поскольку другие отладчики консультируются с вашим местным руководством отладчика.