The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
SSL: peer did not return a certificate, !*! CromaX, 20-Мрт-08, 14:56  [смотреть все]
Доброе утро.
Пытаюсь создать SSL канал, и авторизацию при помощи SSL сертификатов.

Создаю сертификаты, как описанно здесь : http://www.vanemery.com/Linux/Apache/apache-SSL.html

CA:
openssl genrsa -des3 -out my-ca.key 2048
openssl req -new -x509 -days 3650 -key my-ca.key -out my-ca.crt

Для сервера
openssl genrsa -des3 -out mars-server.key 1024
openssl req -new -key mars-server.key -out mars-server.csr
openssl x509 -req -in mars-server.csr -out mars-server.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 3650

для клиента :
openssl genrsa -des3 -out van-c.key 1024
openssl req -new -key van-c.key -out van-c.csr
openssl x509 -req -in van-c.csr -out van-c.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 3650
openssl pkcs12 -export -in van-c.crt -inkey van-c.key -name "Van Emery Cert" -out van-c.p12
openssl pkcs12 -in van-c.p12 -clcerts -nokeys -info

Импортирую в IE 7 van-c.p12. Все ок, но Пишет что "Невозможно обнаружить поставщика этого сертификата." на вкладке "путь сертификации".
Это значит, как я понимаю, в сертификат не включена инфа о поставщике (CA)????
пробовал параметр указывать -CAfile при подписи van-c : не получилось указать, не понятно как и где....
в логе ssl -
[error] Re-negotiation handshake failed: Not accepted by client!?
[trace] OpenSSL: Write: SSLv3 read client certificate B
[trace] OpenSSL: Exit: error in SSLv3 read client certificate B
[error] SSL error on writing data (OpenSSL library error follows)
[error] OpenSSL: error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate [Hint: No CAs known to server for verification?]

если указать SSLVerifyClient none, то соеденение SSL работает нормально.
Совсем запутался.

В http.conf сначало такая секция:
<VirtualHost _default_:443>

#  General setup for the virtual host
DocumentRoot "/usr/local/www/data"
ServerName mars
ServerAdmin admin@mars
ErrorLog /var/log/httpd-error.log
TransferLog /var/log/httpd-access.log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

#   Server Certificate:
SSLCertificateFile /usr/local/etc/apache/ssl.crt/mars-server.crt

#   Server Private Key:
SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/mars-server.key

#   Server Certificate Chain:
#SSLCertificateChainFile /usr/local/etc/apache/ssl.crt/ca.crt

#   Certificate Authority (CA):
#SSLCACertificatePath /usr/local/etc/apache/ssl.crt

#by Crx
SSLCACertificateFile  /usr/local/etc/apache/ssl.crt/my-ca.crt

<Directory /home/mars/data/www/mars/test/restructed/>
#    SSLRequireSSL
#    SSLVerifyClient require
#    SSLVerifyClient 2
#    SSLVerifyClient none
#    SSLVerifyDepth 1
</Directory>

#   Certificate Revocation Lists (CRL):
#SSLCARevocationPath /usr/local/etc/apache/ssl.crl
#SSLCARevocationFile /usr/local/etc/apache/ssl.crl/ca-bundle.crl

#   Client Authentication (Type):
# by crx
#SSLVerifyClient require
#SSLVerifyDepth  10

#   SSL Engine Options:
#SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/usr/local/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

#   SSL Protocol Adjustments:
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
#   Per-Server Logging:
CustomLog /var/log/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

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

<VirtualHost ip:443>
    ServerName mars
    DocumentRoot /home/mars/data/www/mars
    Group mars
    User mars
    CustomLog /home/mars/logs/mars.access.log combined
    ErrorLog /home/mars/logs/mars.error.log
    ServerAlias www.mars
    ServerAdmin admin@mars
    AddDefaultCharset windows-1251
    php_admin_value open_basedir "/home/mars/data:."
    php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f admin@mars"
    php_admin_value upload_tmp_dir "/home/mars/data/tmp"
    php_admin_value session.save_path "/home/mars/data/tmp"
    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
    AddType application/x-httpd-php-source .phps
    SSLEngine on
    SSLCertificateFile /usr/local/etc/apache/ssl.crt/mars-server.crt
    SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/mars-server.key
    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    <Directory /home/mars/data/www/mars/test/restructed/>
        SSLVerifyClient 2
#             SSLVerifyClient none
#             SSLVerifyClient reque
        SSLVerifyDepth 1
    </Directory>
</VirtualHost>

  • SSL: peer did not return a certificate, !*! angra, 05:56 , 21-Мрт-08 (1)
    • SSL: peer did not return a certificate, !*! CromaX, 13:00 , 21-Мрт-08 (2)
      >Самоподписанные сертификаты ничего не стоят и естественно валидными не считаются. Если хотите
      >чтобы бразуеры клиентов считали ваши сертификаты валидными, то заплатите определенную сумму
      >соответствующему CA.

      Необходимо подписать сертификат клиентский (van-..), чтобы он включал информацию о поставщике Сертификата.
      Как это сделать я не знаю.
      Сейчас он не включает.
      Одно дело Когда Браузер пишет "нет доверия к сертификату ...", и другое, когда "не могу онаружить поставщика данного сертификата".
      Помогите советом, гуру SSL, уже очень долго мучаюсь...


      • SSL: peer did not return a certificate, !*! CromaX, 00:13 , 22-Мрт-08 (3)
        Проблема было в неправильной настройке httpd.conf и в некоректной подписи CA.

        CA :
        openssl req -new -newkey rsa:1024 -nodes -keyout ca.key -x509 -days 500 -subj /C=RU/ST=Msk/L=Msk/O=mars/OU=mars/CN=mars.in/emailAddress=admin@mars.in -out ca.crt

        Сертификат Для сервера
        openssl genrsa -des3 -out mars-server.key 1024
        openssl req -new -key mars-server.key -out mars-server.csr -subj /C=RU/ST=Msk/L=Msk/O=mars/OU=mars2/CN=mars.in/emailAddress=admin@mars.in
        openssl x509 -req -in mars-server.csr -out mars-server.crt -sha1 -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650

        Сертификат Для Клиента
        openssl req -new -newkey rsa:1024 -nodes -keyout client01.key -subj /C=RU/ST=Msk/L=Msk/O=mars/OU=mars1/CN=mars.in/emailAddress=admin@mars.in -out client01.csr
        openssl ca -config ca.config -in client01.csr -out client01.crt -batch
        openssl pkcs12 -export -in client01.crt -inkey client01.key -certfile ca.crt -out client01.p12 -passout pass:1234


        Обязательно проверить правильность готовых сертификатов:
        openssl verify -CAfile ca.crt client01.crt
        openssl verify -CAfile ca.crt mars-server.crt

        В http.conf

        <VirtualHost *:443>
        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLProtocol all -SSLv2

        SSLCertificateFile /usr/local/etc/apache/ssl.crt/mars-server.crt
        SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/mars-server.key
        SSLCertificateChainFile /usr/local/etc/apache/ssl.crt/ca.crt
        SSLCACertificatePath /root/
        SSLCACertificateFile /usr/local/etc/apache/ssl.crt/ca.crt #CA
        <Directory /home/mars/data/www/mars.in/test/restructed/>
            SSLRequireSSL
            SSLVerifyClient require #требовать авторизацию сертификатом
            SSLVerifyDepth 1    #проверять CA, 0 не проверять.
        </Directory>
        </VirtualHost>

        <VirtualHost 10.10.10.10:443>
            ServerName mars.in
            DocumentRoot /home/mars/data/www/mars.in
            Group mars
            User mars
            CustomLog /home/mars/logs/mars.in.access.log combined
            ErrorLog /home/mars/logs/mars.in.error.log
            ServerAlias www.mars.in
            ServerAdmin admin@mars.in

            SSLEngine on
            SSLCACertificateFile /usr/local/etc/apache/ssl.crt/ca.crt # CA
            SSLCertificateFile /home/httpd-cert/mars-server.crt
            SSLCertificateKeyFile /home/httpd-cert/mars-server.key
            SSLVerifyClient require
            SSLVerifyDepth 1
            SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
        </VirtualHost>


        Так работает. Правдо, в 2х местах пришлось все это прописывать.
        Не хочеться ничего менять, т.к. 2 недели разбирался...
        client01.p12 импортируем в IE7. В FireFox вроде тоже работает.

        доп информация :
            http://www.vanemery.com/Linux/Apache/apache-SSL.html
            http://www.webscript.ru/stories/04/05/29/2604693
            http://www.modssl.org/docs/2.8/ssl_faq.html#ToC9
            http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslciphers...

        Здесь таже проблема на eng :
            http://www.mail-archive.com/openssl-users@openssl.org/m...

        Тема закрыта.

  • SSL: peer did not return a certificate, !*! guest 55, 16:45 , 11-Мрт-10 (4)



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

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