Salve a tutti.
Dunque devo fare un passaggio di certificati tra un apache e un'altro ma c'e' qualcosa che non torna.
Allora il primo apache viene contattato in https e deve rigirare in http l'header del certificato ad un secondo apache su cui risiede un php che dovra' gestirlo.
Nel primo apache gestisco la seguente configurazione:
Mentre sul secondo apache (che e' stato impostato per ascoltare sulla 8080 viene eseguito il seguente codice php:codice:RequestHeader set SSL_CLIENT_S_DN "" RequestHeader set SSL_CLIENT_I_DN "" RequestHeader set SSL_SERVER_S_DN_OU "" RequestHeader set SSL_CLIENT_VERIFY "" RequestHeader set SSL_CLIENT_V_START "" RequestHeader set SSL_CLIENT_V_END "" RequestHeader set SSL_CLIENT_M_VERSION "" RequestHeader set SSL_CLIENT_M_SERIAL "" RequestHeader set SSL_CLIENT_CERT "" RequestHeader set SSL_CLIENT_VERIFY "" RequestHeader set SSL_SERVER_M_SERIAL "" RequestHeader set SSL_SERVER_M_VERSION "" RequestHeader set SSL_SERVER_I_DN "" RequestHeader set SSL_SERVER_CERT "" <Location /TiMed> SSLVerifyClient require SSLVerifyDepth 10 SSLOptions +ExportCertData +StrictRequire +OptRenegotiate RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s" RequestHeader set SSL_CLIENT_I_DN "%{SSL_CLIENT_I_DN}s" RequestHeader set SSL_SERVER_S_DN_OU "%{SSL_SERVER_S_DN_OU}s" RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s" RequestHeader set SSL_CLIENT_V_START "%{SSL_CLIENT_V_START}s" RequestHeader set SSL_CLIENT_V_END "%{SSL_CLIENT_V_END}s" RequestHeader set SSL_CLIENT_M_VERSION "%{SSL_CLIENT_M_VERSION}s" RequestHeader set SSL_CLIENT_M_SERIAL "%{SSL_CLIENT_M_SERIAL}s" RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s" RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s" RequestHeader set SSL_SERVER_M_VERSION "%{SSL_SERVER_VERSION}s" RequestHeader set SSL_SERVER_I_DN "%{SSL_SERVER_I_DN}s" RequestHeader set SSL_SERVER_CERT "%{SSL_SERVER_CERT}s" ProxyPass http://ipaddress:8080/MyApp/ ProxyPassReverse http://ipaddress:8080/MyApp/ </Location>
Quello che succede e' che il primo echo mi stampa un certificato mentre il secondo echo e' vuoto come se openssl_x509_parse fallisse nella parsificazione.codice:$headers = apache_request_headers(); $cert=$headers['SSL_CLIENT_CERT']; echo "CERT: ".$cert; $cert_data = openssl_x509_parse($cert,true); echo "CERT_DATA: ".$cert_data;
Se invece accedo direttamente al secondo apache in https passando il certificato e leggendolo con openssl_x509_parse($_SERVER[SSL_CLIENT_CERT]) il tutto funziona!
Io vorrei usare questo bridge ma non riesco a capire per quale motivo se passo a openssl_x509_parse il contenuto di $headers['SSL_CLIENT_CERT'] non funziona mentre se accedo direttamente e gli passo $_SERVER[SSL_CLIENT_CERT] funziona!![]()
![]()
Ciao a tutti e grazie
Sandro


Rispondi quotando