Коллеги, очень прошу помочь разобраться с довольно странной штукой. Общие симптомы:
Есть система платежей на Apache+OpenSSL+самописный софт. Работает это все через сертификаты. Вот на днях случилась довольно странная штука, есть клиент с емэйлом предположим test@example.com у него есть сертификат, который истек.Он делает платежи какой то совей программой, которая коннектится к нашему апачу, сует ему сертификат, тот его обрабатывает грит что Ок, и дальше пропускает запрос в ядро.
так вот, в чем проблема:apache_ssl_request.log:
[26/Mar/2010:15:48:49 +0300] 10.10.10.33 0 TLSv1 EDH-RSA-DES-CBC3-SHA test@example.com 09C6 "GET /hyperkassa?function%<skipped>Б+1 HTTP/1.1" 200 302
apache_ssl_request.log:
[Fri Mar 26 15:48:49 2010] [error] [client 10.10.192.33] Certificate Verification: Error (10): certificate has expiredПрикол в том, что платеж таки попал в ядро. Как такое может быть? т.е. почему просроченный сертификат хоть и обругался, но прошел в систему? прошу обратить внимание что apache отдал ошибку 200 в тоже время как обругался на сертификат. ?? я в когнитивном диссонансе. Объясните плз )
>[оверквотинг удален]
>[26/Mar/2010:15:48:49 +0300] 83.143.192.33 0 TLSv1 EDH-RSA-DES-CBC3-SHA test@example.com 09C6 "GET /hyperkassa?function%<skipped>Б+1 HTTP/1.1" 200 302
>apache_ssl_request.log:
>[Fri Mar 26 15:48:49 2010] [error] [client 83.143.192.33] Certificate Verification: Error (10):
>certificate has expired
>
>Прикол в том, что платеж таки попал в ядро. Как такое может
>быть? т.е. почему просроченный сертификат хоть и обругался, но прошел в
>систему? прошу обратить внимание что apache отдал ошибку 200 в тоже
>время как обругался на сертификат. ?? я в когнитивном диссонансе. Объясните
>плз )RTFM
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslverifyc...
>[оверквотинг удален]
>>certificate has expired
>>
>>Прикол в том, что платеж таки попал в ядро. Как такое может
>>быть? т.е. почему просроченный сертификат хоть и обругался, но прошел в
>>систему? прошу обратить внимание что apache отдал ошибку 200 в тоже
>>время как обругался на сертификат. ?? я в когнитивном диссонансе. Объясните
>>плз )
>
>RTFM
>http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslverifyc...Эмм, коллега, везде где только можно прописано:
SSLVerifyClient require
что то другое видимо, или я Вас не правильно понял.
>[оверквотинг удален]
>>>плз )
>>
>>RTFM
>>http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslverifyc...
>
>Эмм, коллега, везде где только можно прописано:
>
>SSLVerifyClient require
>
>что то другое видимо, или я Вас не правильно понял.Что-то другое, да не совсем.
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslrequire
Если не ошибаюсь, там пример для вашего случая.
>[оверквотинг удален]
>>
>>Эмм, коллега, везде где только можно прописано:
>>
>>SSLVerifyClient require
>>
>>что то другое видимо, или я Вас не правильно понял.
>
>Что-то другое, да не совсем.
>http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslrequire
>Если не ошибаюсь, там пример для вашего случая.SSLRequire %{SSL_CLIENT_I_DN_O} eq "an Organization" and %{SSL_CLIENT_S_DN_CN} ne "an Organization test"
Сертификаты выдаются собственным УЦ. Эта строчка служит для проверки принадлежносчти сертфиката нашему УЦ. Других директив SSLRequire нет.диссонанс продолжает дисгармонировать =)
>[оверквотинг удален]
>>http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslrequire
>>Если не ошибаюсь, там пример для вашего случая.
>
>SSLRequire %{SSL_CLIENT_I_DN_O} eq "an Organization" and %{SSL_CLIENT_S_DN_CN} ne "an Organization test"
>
>
>Сертификаты выдаются собственным УЦ. Эта строчка служит для проверки принадлежносчти сертфиката нашему
>УЦ. Других директив SSLRequire нет.
>
>диссонанс продолжает дисгармонировать =)Я же говорю, чтоб вы обратили внимание на приведёный пример.
Попробуйте заменить вашу строку на такую:
SSLRequire (%{SSL_CIPHER} !~ m/^(EXP|NULL)-/ and %{SSL_CLIENT_I_DN_O} eq "an Organization" and %{SSL_CLIENT_S_DN_CN} ne "an Organization test")
>
>Я же говорю, чтоб вы обратили внимание на приведёный пример.
>Попробуйте заменить вашу строку на такую:
>SSLRequire (%{SSL_CIPHER} !~ m/^(EXP|NULL)-/ and %{SSL_CLIENT_I_DN_O} eq "an Organization" and %{SSL_CLIENT_S_DN_CN} ne
>"an Organization test")Спасибо огромное. Но вот тогда возникает такой вопрос, не очень понятного поведения софта.
поясню, 90% запросов этого клиента с этим сертификатом таки было отклонено, однако 10% где то прошло? в чем такая избирательность? Просто хочется разобраться с вопросом, чтоб не дисгармонировать более с реальностью =)про ваш пример - буду пробовать, по результатам если интересно - могу отписаться :)
доку по OPenSSL а в частности SSL_CIPHER буду курить. Может и впрямь там и есть просветление.
> Апну треэд.Народ, очень нужно разобраться, помажите люди добрые достичь просветеления и внутренней гармонии.