Sto tentando di eseguire il debug di un problema con la verifica del certificato ssl e ho stabilito che openssl ottenga le posizioni cert con la restituzione di percorsi errati. (Vedi sotto)php 5.6 certificato ssl verifica
Come faccio a capire come impostare questo? Ho cercato nel file php.ini e non ho trovato questo riferimento da nessuna parte.
cmuench-air:bin cmuench$ ./php -r "print_r(openssl_get_cert_locations());"
Array
(
[default_cert_file] => /bitnami/mampstack56Dev-osx-x64/output/common/openssl/cert.pem
[default_cert_file_env] => SSL_CERT_FILE
[default_cert_dir] => /bitnami/mampstack56Dev-osx-x64/output/common/openssl/certs
[default_cert_dir_env] => SSL_CERT_DIR
[default_private_dir] => /bitnami/mampstack56Dev-osx-x64/output/common/openssl/private
[default_default_cert_area] => /bitnami/mampstack56Dev-osx-x64/output/common/openssl
[ini_cafile] =>
[ini_capath] =>
)
php.ini (parti rilevanti) ... Non vedo bitnami/mampstack56Dev ovunque ...
[openssl]
; The location of a Certificate Authority (CA) file on the local filesystem
; to use when verifying the identity of SSL/TLS peers. Most users should
; not specify a value for this directive as PHP will attempt to use the
; OS-managed cert stores in its absence. If specified, this value may still
; be overridden on a per-stream basis via the "cafile" SSL stream context
; option.
;openssl.cafile=
; If openssl.cafile is not specified or if the CA file is not found, the
; directory pointed to by openssl.capath is searched for a suitable
; certificate. This value must be a correctly hashed certificate directory.
; Most users should not specify a value for this directive as PHP will
; attempt to use the OS-managed cert stores in its absence. If specified,
; this value may still be overridden on a per-stream basis via the "capath"
; SSL stream context option.
;openssl.capath=
;Curl ca bundle certificate
curl.cainfo="/Applications/phppos/common/openssl/certs/curl-ca-bundle.crt"
EDIT:
So che questo è muto, ma ci sono tempi in cui il certificato SSL sarà autofirmato. C'è un'impostazione ini che posso modificare per disabilitare il controllo di tutti i certificati? o devo farlo in codice per socket e arricciatura?
Questi percorsi bitnami/mampstack sono i percorsi gestiti del sistema operativo che vengono restituiti chiamando le funzioni native OpenSSL. Questi percorsi predefiniti sono definiti in base al percorso di installazione di OpenSSL: vedi http://docs.huihoo.com/doxygen/openssl/1.0.1c/cryptlib_8h.html#a632c06aa262d7c398d82f89f50f636bf Probabilmente devi codificare manualmente il percorso negli script per cercare i certificati appropriati o metterli in quella directory. – drew010
Quindi quei percorsi sono codificati in un file binario da qualche parte che non riesco davvero a ottenere? –
Finiscono per essere hardcoded poiché sono compilati in OpenSSL in base alle opzioni di configurazione utilizzate quando il software è configurato e compilato. – drew010