ngx http ssl module: клиентские сертификаты

enikesha nginx-forum на nginx.us
Вт Мар 2 13:22:57 MSK 2010


Приветствую!

При использовании клиентских сертификатов, подписанных алгоритмом sha256WithRSAEncryption при попытке установки соединения nginx рвет его с ошибкой в логе:

SSL_do_handshake() failed (SSL: error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm) while SSL handshaking


Где-то в интернете наткнулся на информацию, что OpenSSL при стандартной инициализации подключает не все алгоритмы, и нужно отдельно вызывать OpenSSL_add_all_algorithms(). Собственно, после этого все заработало:


--- nginx-0.8.31/src/event/ngx_event_openssl.c  2009-11-23 17:09:57.000000000 +0300
+++ nginx-my/src/event/ngx_event_openssl.c      2010-02-06 16:04:14.871090623 +0300
@@ -106,6 +106,8 @@

     ENGINE_load_builtin_engines();

+    OpenSSL_add_all_algorithms();
+
     ngx_ssl_connection_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);

     if (ngx_ssl_connection_index == -1) {

--- nginx-0.8.31/src/event/ngx_event_openssl.h  2009-11-11 13:59:07.000000000 +0300
+++ nginx-my/src/event/ngx_event_openssl.h      2010-02-06 16:00:43.691095715 +0300
@@ -15,6 +15,7 @@
 #include 
 #include 
 #include 
+#include 

 #define NGX_SSL_NAME     "OpenSSL"



Posted at Nginx Forum: http://forum.nginx.org/read.php?21,58969,58969#msg-58969




Подробная информация о списке рассылки nginx-ru