check_cert() and php_openssl_store_errors do not pick up validation errors
Nessuno ha ancora preso questa issue.
- Lingua principale
- C
- Stelle
- 40.4k
- Fork
- 8.2k
- Merge medio
- 2g 13h
- PR unite (30g)
- 96
Descrizione
Description
The following code:
<?php
var_dump(openssl_x509_checkpurpose(file_get_contents('a.pem'), X509_PURPOSE_SSL_SERVER));
while ($msg = openssl_error_string())
echo $msg . "<br />\n";"
where a.pem is
wget https://raw.githubusercontent.com/fuzyll/defcon-vm/master/extras/hfd/server.pem -O a.pem
(or any other single certificate file that won't validate; without intermediates etc)
Resulted in this output:
$ php x.php
bool(false)
But I expected this output instead:
$ php x.php
bool(false)
error: certificate chain too long (depth 0)
(or similar error message).
Why this doesn't work currently? Because X509_verify_cert() in check_cert() validation errors need to be picked up by
error = X509_STORE_CTX_get_error(csc)
X509_verify_cert_error_string(error)
X509_STORE_CTX_get_error_depth(csc)
which is not done in php ext/openssl internals.
PHP Version
PHP 8.1.4
Operating System
No response
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dagli internals di ext/openssl intorno a check_cert() e php_openssl_store_errors(), quindi segui il percorso dell’errore di X509_verify_cert() descritto nell’issue. Esegui la riproduzione PHP fornita con a.pem; il lavoro è completato quando gli errori di validazione vengono esposti tramite openssl_error_string() insieme al risultato false.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- c, php
- Ambito
- security
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 42/100