The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Apache + OpenSSL = траблы"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Apache + OpenSSL = траблы" 
Сообщение от Ciber_SLasH Искать по авторуВ закладки(ok) on 09-Апр-05, 07:50  (MSK)
Подскажите пожалуйста как подружить OpenSSL 0.9.7f и Apache 2.0.53 ?

Пробовал настраивать по нескольким докам (по четырём - все отсюда) и всё равно работать браузер (проверял на lynx и Konquerror) через HTTPS отказывался...

--------------------------------------
Сертификаты создавал следующим образом
--------------------------------------

1. Создание закрытого ключа и самоподписанного сертификата:

$ openssl req -new -newkey rsa:4096 -nodes -keyout ca.key -x509 -days 3000 \
  -subj /C=RU/L=SPB/O=Home/CN=secure.my-tests -out ca.crt

В результате появляется 2 файла:
ca.key - закрытый ключ
ca.crt - самоподписанный сертификат

2. Создание сертификата сервера:

1) создаём конфиг "ca.config"

[ ca ]
default_ca = CA_DEFAULT

[ CA_DEFAULT ]
dir = ./db # каталог для служебных файлов
certs = $dir/certs # каталог для сертификатов
new_certs_dir = $dir/newcerts # каталог для новых сертификатов

database = $dir/index.txt # файл с БД подписанных сертификатов
serial = $dir/serial # файл с серийником сертификата (HEX)
certificate = ./ca.crt # файл сертификата CA
private_key = ./ca.key # файл закрытого ключа CA
RANDFILE = /var/log/messages

default_days = 3650 # срок действия подписываемого сертификата
default_crl_days = 7 # срок действия CRL
default_md = md5 # алгоритм подписи

# Название секции с описанием политики в отношении данных сертификата
policy = policy_anything

[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied # должен содержать имя домена - обязателен
emailAddress = optional

2) создаём структуру каталогов

$ mkdir db
$ mkdir db/certs
$ mkdir db/newcerts
$ touch db/index.txt
$ echo "01" > db/serial

3) создание серверного закрытого ключа и запроса на сертификат:

$ openssl req -new -newkey rsa:4096 -nodes -keyout server.key \
  -subj /C=RU/L=SPB/O=Home/CN=secure.my-tests -out server.csr

В результате появляется 2 файла:
server.key - закрытый ключ сервера
server.csr - запрос на сертификат

4) подпись запроса на сертификат (CSR) с помощью доверенного сертификата (CA)

$ openssl ca -config ca.config -in server.csr -out server.crt -batch

В результате появляется файл сертификата "server.crt"

5) подготовка данных для передачи клиенту (этот шаг даже и не знаю, нужен или нет)

$ openssl pkcs12 -export -in server.crt -inkey server.key -certfile ca.crt \
  -out server.p12 -passout pass:123456

---------------------------------------
Файл "/usr/local/apache2/conf/ssl.conf"
---------------------------------------

SSLRandomSeed startup builtin
SSLRandomSeed connect builtin

<IfDefine SSL>

Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache         dbm:/usr/local/apache2/logs/ssl_scache
SSLSessionCacheTimeout  300
SSLMutex  file:/usr/local/apache2/logs/ssl_mutex

<VirtualHost _default_:443>

DocumentRoot "/www/secure.my-tests"
ServerName secure.my-tests:443
ServerAdmin cs@localhost
ErrorLog /usr/local/apache2/logs/secure_error_log
TransferLog /usr/local/apache2/logs/secure_access_log

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

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
SSLCACertificateFile /usr/local/apache2/conf/ssl.crt/ca.crt

SSLVerifyClient require
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/www/secure.my-tests">
    SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog /usr/local/apache2/logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>
</IfDefine>

-----------------

В эррор-секьюр-логе (/usr/local/apache2/logs/secure_error_log) после остановки и запуска индейца с новыми параметрами было следующее:

[Sat Apr 09 04:07:34 2005] [warn] Init: Oops, you want to request client authentication, but no CAs are known for verification!?  [Hint: SSLCACertificate*]

--------------------------------------------------------------------------

Если где-чего напутал тыкните пальцем.
Как с этим справиться ? Как заставить lynx (или любой другой браузер) работать через HTTPS ?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Apache + OpenSSL = траблы" 
Сообщение от Leonid_D emailИскать по авторуВ закладки(??) on 09-Апр-05, 11:16  (MSK)
Убери строку SSLVerifyClient require, если она не нужна.

Просто пишешь https://url и все, если браузер поддерживает ssl...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Apache + OpenSSL = траблы" 
Сообщение от Ciber_SLasH Искать по авторуВ закладки(ok) on 09-Апр-05, 15:08  (MSK)
>Убери строку SSLVerifyClient require, если она не нужна.
Спасибо -- это помогло. :)

А как избавиться от сообщений об ошибках ?
lynx при запуске (lynx https://localhost) говорит:

SSL error: self signed certificate-Continue? (y)
Ошибка SSL: host(localhost) != cert(secure.my-tests)-Продолжить? (y)

Дальше всё нормально, сайт грузится.

А Konqueror говорит такую бяку:

"Сертификат сервера не прошёл проверку подлинности (localhost)" и две кнопки "Подробности" и "Продолжить". Нажал "Подробности", а там красным цветом выделено:

"Сертификат подписан самой стороной и поэтому не может быть достоверным. Сертификат не был выпущен для этого узла."

Правда в Konqueror я импортировал файл "server.p12" полученный на шаге 5).

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Apache + OpenSSL = траблы" 
Сообщение от hng emailИскать по авторуВ закладки(ok) on 10-Апр-05, 05:42  (MSK)
1. Пятый шаг тебе скорее всего не нужен. Хотя если собираешься раздавать сертификаты виндовым клиентам, то придется конвертить их в PFX.

>"Сертификат сервера не прошёл проверку подлинности (localhost)" и две кнопки "Подробности" и
>"Продолжить". Нажал "Подробности", а там красным цветом выделено:
>
>"Сертификат подписан самой стороной и поэтому не может быть достоверным. Сертификат не
>был выпущен для этого узла."

Это потому что в CommonName у тебя стоит secure.my-tests, а имя сервера - localhost. Надо чтоб они были одинаковы, тогда браузер заткнется.

>Правда в Konqueror я импортировал файл "server.p12" полученный на шаге 5).

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

PS. Еще желательно добавить опции -policy policy_anything и -extensions usr_cert, когда подписываешь, и соответственно добавить [usr_cert] в файл ca.config.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Apache + OpenSSL = траблы" 
Сообщение от Ciber_SLasH Искать по авторуВ закладки(ok) on 10-Апр-05, 20:00  (MSK)
>Надо импортировать корневой, а не серверный, тогда все остальные подписанные им будут
>считаться доверенными.
ОК, импортировал корневой -- Konqueror больше не матерится.
А lynx по прежднему жалуется "SSL error: self signed certificate in chain-Continue? (y)".

>PS. Еще желательно добавить опции -policy policy_anything
Добавил... выполнил:
$ openssl ca -config ca.config -policy policy_anything -in server.csr -out server.crt -batch
>и -extensions usr_cert, когда подписываешь, и соответственно добавить [usr_cert] в файл ca.config.
А вот с этим не попонял -- дописал в ca.config:

[ usr_cert ]
basicConstraints = CA:FALSE
nsComment = "OpenSSL Generated Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always

[ req ]
default_bits = 4096
default_keyfile = server.key
distinguished_name = req_distinguished_name
prompt = no

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = RU
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
organizationName = Organization Name (eg, company)
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (host name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64

а дальше какую команду выполнять?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Apache + OpenSSL = траблы" 
Сообщение от hng Искать по авторуВ закладки(ok) on 11-Апр-05, 07:38  (MSK)
>А lynx по прежднему жалуется "SSL error: self signed certificate in chain-Continue?
>(y)".

Тут к сожалению ничем помочь не могу - я lynxом не пользовался очень давно, даже не знал, что там поддержка SSL появилась.

>А вот с этим не попонял -- дописал в ca.config:
>
>[ usr_cert ]
>basicConstraints = CA:FALSE
>nsComment = "OpenSSL Generated Certificate"
>subjectKeyIdentifier = hash
>authorityKeyIdentifier = keyid,issuer:always
>
>[ req ]
>default_bits = 4096
>default_keyfile = server.key
>distinguished_name = req_distinguished_name
>prompt = no
>
>[ req_distinguished_name ]
>countryName = Country Name (2 letter code)
>countryName_default = RU
>countryName_min = 2
>countryName_max = 2
>stateOrProvinceName = State or Province Name (full name)
>localityName = Locality Name (eg, city)
>organizationName = Organization Name (eg, company)
>organizationalUnitName = Organizational Unit Name (eg, section)
>commonName = Common Name (host name)
>commonName_max = 64
>emailAddress = Email Address
>emailAddress_max = 64
>
>а дальше какую команду выполнять?

просто нужно добавить еще "-extensions usr_cert" в команду:

$ openssl ca -config ca.config -policy policy_anything -in server.csr -out server.crt -batch

т.е. получится типа:

openssl ca -config ca.config -policy policy_anything -extensions usr_cert -in server.csr -out server.crt -batch

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Apache + OpenSSL = траблы" 
Сообщение от Ciber_SLasH Искать по авторуВ закладки(ok) on 11-Апр-05, 08:20  (MSK)
>т.е. получится типа:
>
>openssl ca -config ca.config -policy policy_anything -extensions usr_cert -in server.csr -out server.crt
>-batch

ОК, получилось... команда прошла. :)

Спасибо за ответы ;)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру