Dopo aver dato un'occhiata alla documentazione di MatrixSSL suppongo che:
- Poiché è indipendente dal livello di trasporto, non (e non può) recuperare autonomamente i certificati intermedi mancanti. Per fare ciò dovrebbe avere un qualche tipo di client HTTP (magari con supporto proxy) e non riesco a vedere nulla di simile documentato.
- Inoltre non controllerà da solo, che il nome host corrisponda al certificato. È necessario aggiungere il proprio certValidator per farlo. Se non si verifica il nome host nel certificato, si accetterà qualsiasi certificato firmato da una CA attendibile per un host arbitrario, che lascerà effettivamente aperti attacchi man-in-the-middle. Ciò significa che l'implementazione di questo è un must, a meno che non sia necessario controllare solo rispetto ad alcuni certificati fissi (cioè il blocco dei certificati).
- L'API contiene funzioni per la gestione CRL, ma richiede allo sviluppatore di fornire lo stesso CRL. Ha la funzione di ottenere l'URL per il CRL ma lo sviluppatore deve recuperare da solo i dati dell'URL.
- Non ci sono API documentate per OCSP. Poiché OCSP richiede l'accesso HTTP e poiché MatrixSSL stesso è indipendente dal trasporto, si può presumere che non eseguirà ricerche OCSP da solo e non fornirà allo sviluppatore le informazioni necessarie per effettuare ricerche OCSP.
Alla fine si tratta della sicurezza che si ottiene da OpenSSL, ovvero nessun controllo dell'hostname, solo CRL manuale, nessuna API documentata per OCSP (sebbene in OpenSSL ci sia un'API non documentata ma abbastanza complessa).
Dato che stai utilizzando MatrixSSL solo per la tua app personalizzata, ti consiglio di mantenerlo semplice e sicuro accettando solo alcuni certificati specifici che sono controllati da te e che sono codificati all'interno dell'applicazione. In questo caso non avresti bisogno delle cose più complesse come il controllo dell'hostname o della revoca.