Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.06.2008(UTC) Сообщений: 49
|
Здравствуйте. Есть задача: из php (Linux) обращаться к soap-сервису (Windows) по гостовому https с авторизацией по клиентскому сертификату. Клиент: Linux, CryptoPro CSP 3.6 R2. Сервер: Windows 2003, IIS, CryptoPro CSP KC2 3.0.3293. Решил на линуксе установить и настроить stunnel и работать через него. Вот конфиг: Код:
; Certificate/key is needed in server mode and optional in client mode
cert = /tmp/test.cer
; Protocol version (all, SSLv2, SSLv3, TLSv1)
;sslVersion = SSLv3
; Some security enhancements for UNIX systems - comment them out on Win32
;chroot = /opt/cprocsp/var/lib/stunnel/
setuid = root
setgid = root
; PID is created inside chroot jail
pid = /var/opt/cprocsp/tmp/stunnel.pid
; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;compression = rle
CAfile = /tmp/ca_cryptopro.cer
; Some debugging stuff useful for troubleshooting
debug = 7
output = /var/opt/cprocsp/tmp/stunnel.log
; Use it for client mode
client = yes
[https]
accept = 192.168.170.177:9443
connect = test.pbki.ru:443
;connect = www.cryptopro.ru:9443
;TIMEOUTclose = 0
; vim:ft=dosini
Запустил stunnel. Страницы, не требующие клиентский сертификат, (просто гостовый https) работают, а страницы, которые требуют клиентский сертификат не открываются. stunnel.log: Код:
2010.11.18 08:42:44 LOG5[14997:139957945534240]: stunnel 4.18 on x86_64-unknown-linux-gnu
2010.11.18 08:42:44 LOG5[14997:139957945534240]: Threading:PTHREAD Sockets:POLL,IPv4 Auth:LIBWRAP
2010.11.18 08:42:44 LOG6[14997:139957945534240]: file ulimit = 1024 (can be changed with 'ulimit -n')
2010.11.18 08:42:44 LOG6[14997:139957945534240]: poll() used - no FD_SETSIZE limit for file descriptors
2010.11.18 08:42:44 LOG5[14997:139957945534240]: 0 clients allowed
2010.11.18 08:42:44 LOG7[14997:139957945534240]: FD 5 in non-blocking mode
2010.11.18 08:42:44 LOG7[14997:139957945534240]: FD 7 in non-blocking mode
2010.11.18 08:42:44 LOG7[14997:139957945534240]: FD 8 in non-blocking mode
2010.11.18 08:42:44 LOG7[14997:139957945534240]: SO_REUSEADDR option set on accept socket
2010.11.18 08:42:44 LOG7[14997:139957945534240]: https bound to 192.168.170.177:9443
2010.11.18 08:42:44 LOG7[14998:139957945534240]: Created pid file /var/opt/cprocsp/tmp/stunnel.pid
2010.11.18 08:42:52 LOG7[14998:139957945534240]: https accepted FD=9 from 192.168.130.102:56828
2010.11.18 08:42:52 LOG7[14998:139957945530128]: client start
2010.11.18 08:42:52 LOG7[14998:139957945530128]: https started
2010.11.18 08:42:52 LOG7[14998:139957945530128]: FD 9 in non-blocking mode
2010.11.18 08:42:52 LOG7[14998:139957945530128]: TCP_NODELAY option set on local socket
2010.11.18 08:42:52 LOG7[14998:139957945530128]: FD 10 in non-blocking mode
2010.11.18 08:42:52 LOG7[14998:139957945530128]: FD 11 in non-blocking mode
2010.11.18 08:42:52 LOG7[14998:139957945530128]: Connection from 192.168.130.102:56828 permitted by libwrap
2010.11.18 08:42:52 LOG5[14998:139957945530128]: https connected from 192.168.130.102:56828
2010.11.18 08:42:52 LOG7[14998:139957945534240]: Cleaning up the signal pipe
2010.11.18 08:42:52 LOG6[14998:139957945534240]: Child process 15000 finished with code 0
2010.11.18 08:42:52 LOG7[14998:139957945530128]: FD 13 in non-blocking mode
2010.11.18 08:42:52 LOG7[14998:139957945530128]: https connecting
2010.11.18 08:42:52 LOG7[14998:139957945530128]: connect_wait: waiting 10 seconds
2010.11.18 08:42:52 LOG7[14998:139957945530128]: connect_wait: connected
2010.11.18 08:42:52 LOG7[14998:139957945530128]: Remote FD=13 initialized
2010.11.18 08:42:52 LOG7[14998:139957945530128]: TCP_NODELAY option set on remote socket
2010.11.18 08:42:52 LOG7[14998:139957945530128]: start SSPI connect
2010.11.18 08:42:52 LOG7[14998:139957945530128]: open file /tmp/test.cer with certificate
2010.11.18 08:42:52 LOG3[14998:139957945530128]: Credentials compleet
2010.11.18 08:42:52 LOG7[14998:139957945530128]: 96 bytes of handshake data sent
2010.11.18 08:42:52 LOG5[14998:139957945530128]: 987 bytes of handshake(in handshake loop) data received.
2010.11.18 08:42:52 LOG5[14998:139957945530128]: 210 bytes of handshake data sent
2010.11.18 08:42:52 LOG5[14998:139957945530128]: 31 bytes of handshake(in handshake loop) data received.
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Handshake was successful
2010.11.18 08:42:52 LOG5[14998:139957945530128]: PerformClientHandshake finish
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Server subject: E=dima@pbki.ru, C=RU, S=RT, L=Kazan, O=PBKI, OU=IT, CN=test.pbki.ru
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Server issuer: E=info@cryptopro.ru, C=RU, O=CRYPTO-PRO, CN=Test Center CRYPTO-PRO
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Protocol: TLS1
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Cipher: Gost 28147-89
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Cipher strength: 256
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Hash: Gost R 34.11-94
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Hash strength: 256
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Key exchange: 0xaa25
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Key exchange strength: 512
2010.11.18 08:42:52 LOG7[14998:139957945530128]: Handshake_done
2010.11.18 08:42:52 LOG7[14998:139957945530128]: add ssl read socket to pool
2010.11.18 08:42:52 LOG7[14998:139957945530128]: ssl_rd = 1, c->ssl_ptr = 0,c->sock_ptr=0,want_rd = 0
2010.11.18 08:42:52 LOG7[14998:139957945530128]: Enter pool section on transfer
2010.11.18 08:42:52 LOG7[14998:139957945530128]: data reciev from socket = 775
2010.11.18 08:42:52 LOG7[14998:139957945530128]: add ssl read socket to pool
2010.11.18 08:42:52 LOG7[14998:139957945530128]: ssl_rd = 1, c->ssl_ptr = 0,c->sock_ptr=775,want_rd = 0
2010.11.18 08:42:52 LOG7[14998:139957945530128]: Enter pool section on transfer
2010.11.18 08:42:52 LOG5[14998:139957945530128]: SSPI_write start
2010.11.18 08:42:52 LOG7[14998:139957945530128]: SSPI_write data is GET
2010.11.18 08:42:52 LOG7[14998:139957945530128]: send all data after encrypt
2010.11.18 08:42:52 LOG7[14998:139957945530128]: data send to ssl_socket =775
2010.11.18 08:42:52 LOG7[14998:139957945530128]: add ssl read socket to pool
2010.11.18 08:42:52 LOG7[14998:139957945530128]: ssl_rd = 1, c->ssl_ptr = 0,c->sock_ptr=0,want_rd = 0
2010.11.18 08:42:52 LOG7[14998:139957945530128]: Enter pool section on transfer
2010.11.18 08:42:52 LOG7[14998:139957945530128]: SSPI_read start
2010.11.18 08:42:52 LOG7[14998:139957945530128]: recv ok on SSPI_read err= 13
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Received 13 bytes from ssl socket
2010.11.18 08:42:52 LOG3[14998:139957945530128]: Couldn't decrypt, error 90321
2010.11.18 08:42:52 LOG3[14998:139957945530128]: error on SSPI_read
2010.11.18 08:42:52 LOG5[14998:139957945530128]: Connection reset: 775 bytes sent to SSL, 0 bytes sent to socket
2010.11.18 08:42:52 LOG7[14998:139957945530128]: free Buffers
2010.11.18 08:42:52 LOG7[14998:139957945530128]: delete c->hClientCreds
2010.11.18 08:42:52 LOG5[14998:139957945530128]: incomp_mess = 1, extra_data = 0
2010.11.18 08:42:52 LOG7[14998:139957945530128]: https finished (0 left)
Сертификаты клиента и сервера выпущены тестовым УЦ КриптоПро. Корневые сертификаты установлены и на клинете и на сервере. На клиенте пробовал подписывать данные с помощью установленного клиентского сертификата - работает. На клиенте сертификаты установлены для root-а. Запускаю stunnel также под root-ом. Перенес клиентский контейнер на свой рабочий компьютер (Windows Vista), https с авторизацией по сертификату работает. Подскажите в чем может быть проблема?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
попробуйте подключиться к тому же серверу с двухсторонней аутентификацией при помощи утилиты csptest csptestf -tlsc -server "адрес сервера" -user "CN сертификата пользователя" -v что получаете? Отредактировано пользователем 28 декабря 2010 г. 16:03:34(UTC)
| Причина: Не указана |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 18.02.2011(UTC) Сообщений: 11
Сказал(а) «Спасибо»: 5 раз
|
Тогда работает, вот что она выдала:
CSP (Type:71) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:AMD64 FastCode:NoHardwareSupport. CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:AMD64 FastCode:NoHardwareSupport. ./csptestf -tlsc -server test.pbki.ru -port 443 -file test/index.html -user сОНКМНЛНВЕММНЕ КХЖН айх -v
Client certificate: Subject: E=dima@pbki.ru, C=RU, S=пр, L=йЮГЮМЭ, O=оайх, OU=-, CN=сОНКМНЛНВЕММНЕ КХЖН айх Issuer : E=info@cryptopro.ru, C=RU, O=CRYPTO-PRO, CN=Test Center CRYPTO-PRO
5 algorithms supported: [0] 1.2.643.2.2.21 (п⌠п·п║п╒ 28147-89) [1] 1.2.643.2.2.3 (п⌠п·п║п╒ п═ 34.11/34.10-2001) [2] 0x801f [3] 1.2.643.2.2.20 (п⌠п·п║п╒ п═ 34.10-94) [4] 1.2.643.2.2.19 (п⌠п·п║п╒ п═ 34.10-2001) Cipher strengths: 256..256 Supported protocols: 0x80 ClientHello: RecordLayer: TLS, Len: 91 Cipher Suites: (00 80) (00 32) (01 31) (00 00) 96 bytes of handshake data sent 989 bytes of handshake data received 210 bytes of handshake data sent 31 bytes of handshake data received Handshake was successful SECPKG_ATTR_NAMES: C=RU, S=RT, L=Kazan, O=PBKI, OU=IT, CN=test.pbki.ru, E=dima@pbki.ru
Server certificate: Subject: C=RU, S=RT, L=Kazan, O=PBKI, OU=IT, CN=test.pbki.ru, E=dima@pbki.ru Issuer : E=info@cryptopro.ru, C=RU, O=CRYPTO-PRO, CN=Test Center CRYPTO-PRO
Protocol: TLS1 Cipher: 0x661e Cipher strength: 256 Hash: 0x801e Hash strength: 256 Key exchange: 0xaa25 Key exchange strength: 512
Header: 5, Trailer: 4, MaxMessage: 16379
HTTP request: GET /test/index.html HTTP/1.0 User-Agent: Webclient Accept:*/*
Sending plaintext: 68 bytes 77 bytes of application data sent 13 bytes of (encrypted) application data received An error occurred in running the program. /dailybuilds/mybuild/CSP/samples/csptest/WebClient.c:2178:Can not open file for writing: test/index.html Error number 0x80092004 (2148081668). Cannot find object or property. Decrypted data: 0 bytes Server requested renegotiate! 100 bytes of handshake data sent 524 bytes of handshake data received 524 bytes of handshake data received 433 bytes of handshake data received 1026 bytes of handshake data sent 35 bytes of handshake data received Handshake was successful 279 bytes of (encrypted) application data received Reply status: HTTP/1.1 200 OK An error occurred in running the program. /dailybuilds/mybuild/CSP/samples/csptest/WebClient.c:2178:Can not open file for writing: test/index.html Error number 0x0 (0). Decrypted data: 270 bytes No data in socket: OK if file is completely downloaded Sending Close Notify 11 bytes of handshake data sent 1 connections, 270 bytes in 0.139 seconds; Total: [ErrorCode: 0x00000000]
Была ошибка 0x80092004: "Object or property not found" (но это, как понимаю, уже при попытке сохранить страницу).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
вообще по второму логу видно, что: -был получен файл test/index.html -его не смогли записать на диск, поскольку в текущей директории нет поддиректории test -сервер запросил renegotiation -после повторного установления соединения вместо Цитата: An error occurred in running the program. /dailybuilds/mybuild/CSP/samples/csptest/WebClient.c:2178:Can not open file for writing: test/index.html Error number 0x80092004 (2148081668). Cannot find object or property. Decrypted data: 0 bytes
получаем Цитата:An error occurred in running the program. /dailybuilds/mybuild/CSP/samples/csptest/WebClient.c:2178:Can not open file for writing: test/index.html Error number 0x0 (0). Decrypted data: 270 bytes то есть, на этот раз всё расшифровалось. В случае с stunnel всё ломается на renegotiate (оттуда убрана поддержка renegotiate из соображений безопасности). Ввиду особенностей работы iis это может быть пересмотрено -- скорее всего будет новая версия stunnel с renegotiate . |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
В свое время в связи с обнаружением уязвимости в некоторых способах использования протокола TLS( ссылка), поддержка renegotiate была убрана из stunnel. В скором времени верну обратно. Хотя это на самом деле тупняк IIS, просит второй раз сертификат клиента когда он уже был предоставлен в первый раз. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.06.2008(UTC) Сообщений: 49
|
cross написал:В скором времени верну обратно. Когда можно ждать stunnel с поддержкой renegotiate.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
Скорее всего, в конце этой недели или на следующей неделе. |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.12.2010(UTC) Сообщений: 1
|
Татьяна написал:Скорее всего, в конце этой недели или на следующей неделе. Сроки изменились, судя по всему?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Нет, не изменились. Смотрите анонс. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close