- Problema: uso di un'autorità di certificazione non attendibile o di un certificato autofirmato
Correzione: utilizza un certificato SSL pubblico rilasciato dalla CA per il server di callback webhook.
Novità
Introduzione
Amministrazione
Inviare, firmare e gestire gli accordi
Funzionalità e flussi di lavoro avanzati per gli accordi
Integrazione con altri prodotti
Acrobat Sign per sviluppatori
Supporto e risoluzione dei problemi
L’SSL bidirezionale, spesso chiamato Client-Side SSL, o TLS reciproco, è una modalità SSL in cui sia il server che il client (browser Web) emettono certificati per identificare se stessi.
Gli amministratori dell’account possono configurare un certificato lato client sulla pagina Impostazioni di sicurezza.
Acrobat Sign verifica i certificati SSL durante la distribuzione dei payload nell’URL del webhook. I webhook che non superano la verifica del certificato SSL non consegnano correttamente il payload JSON.
Utilizza l’SSL bidirezionale per autenticare il client (Acrobat Sign) e il servizio di ascolto per garantire che solo Acrobat Sign possa raggiungere l’URL del webhook.
Se il webhook è stato creato da un’applicazione partner, utilizzerà un certificato client (se disponibile) dall’account di tale applicazione per identificarsi quando invia notifiche al webhook.
Di seguito sono riportate le domande più comuni relative sia al processo di verifica del server Web che alla verifica della certificazione client.
Durante la registrazione di un webhook, Acrobat Sign verifica l’URL del server webhook.
I clienti non potranno registrare il webhook se la connessione all’URL di richiamata del webhook non può essere completata da Acrobat Sign.
No.
L’URL di richiamata del webhook può essere solo HTTPS sulla porta 443 o 8443.
Acrobat Sign blocca il traffico HTTPS in uscita verso tuttele altri porte.
Un buon modo per verificare il certificato del server consiste nell'utilizzare il metodo Strumento di diagnostica di installazione DigiCert® SSL.
Inserisci solo il nome host, ad esempio: www.digicert.com
I problemi più comuni includono:
Correzione: utilizza un certificato SSL pubblico rilasciato dalla CA per il server di callback webhook.
Correzione: installare i certificati intermedi nel server di callback webhook.
Consulta https://www.digicert.com/kb/ssl-certificate-installation.htm per informazioni dettagliate.
Per configurare un SSL bidirezionale per un webhook, è necessario che l’amministratore carichi un file .p12 (o .pfx) che contiene la chiave privata. Il file viene archiviato in modo sicuro nell’account cliente e l’amministratore ha il pieno controllo per rimuoverlo in qualsiasi momento.
In un webhook bidirezionale, Acrobat Sign è il chiamante/cliente e ha bisogno della chiave privata per dimostrare che la chiamata è effettuata da Acrobat Sign per conto dell’account cliente.
Verifica che l’SSL bidirezionale sia abilitato
L’SSL bidirezionale deve essere abilitato sul server di callback webhook.
Utilizzando qualsiasi browser web, connettiti all’URL di richiamata del webhook. Dovresti ricevere:
400 Bad Request No required SSL certificate sent
Ciò significa che il server si aspetta che il client invii certificati client (ovvero: SSL bidirezionale è abilitato per il server).
Se il messaggio non è visualizzato, l’SSL bidirezionale non è abilitata.
Puoi utilizzare Postman ed eseguire una richiesta di POST all'URL di callback del webhook. Dovresti ottenere un risultato simile.
Le credenziali client possono essere un certificato autofirmato o un certificato rilasciato da CA. Tuttavia, deve essere minimamente conforme alle seguenti estensioni X.509 v3:
Estensione X.509 v3 |
Valore |
---|---|
ExtendedKeyUsage |
clientAuth (OID: 1.3.6.1.5.5.7.3.2) |
KeyUsage |
digitalSignature |
Il certificato client deve essere un file PKCS12 con estensione .p12 o .pfx e deve includere sia il certificato client (in modo che il server possa verificare l'identità del client) e la chiave privata del client (in modo che il client possa firmare digitalmente i messaggi per il server da verificare durante la handshake SSL).
Utilizza la proprietà openssl per verificare il file p12 (pfx):
openssl pkcs12 -info -in outfile.p12
La passphrase per la chiave privata dovrebbe essere richiesta. L’output deve contenere entrambi i certificati nonché una chiave privata crittografata come:
Bag Attributes localKeyID: 9D BD 22 80 E7 B2 B7 58 9E AE C8 42 71 F0 39 E1 E7 2B 57 DB subject=/C=US/ST=California/L=San Jose/O=Adobe Inc./CN=sp.adobesignpreview.com issuer=/C=US/O=DigiCert Inc/CN=DigiCert TLS RSA SHA256 2020 CA1 -----BEGIN CERTIFICATE----- MIIGwDCCBaigAwIBAgIQAhJSKDdyQZjlbYO5MJAYOTANBgkqhkiG9w0BAQsFADBP MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSkwJwYDVQQDEyBE ... JAKQLQ== -----END CERTIFICATE----- Bag Attributes: <No Attributes> subject=/C=US/O=DigiCert Inc/CN=DigiCert TLS RSA SHA256 2020 CA1 issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA -----BEGIN CERTIFICATE----- MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 ... -----END CERTIFICATE----- Bag Attributes localKeyID: 9D BD 22 80 E7 B2 B7 58 9E AE C8 42 71 F0 39 E1 E7 2B 57 DB Key Attributes: <No Attributes> -----BEGIN ENCRYPTED PRIVATE KEY----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI7eNh2qlsLPkCAggA ... FHE= -----END ENCRYPTED PRIVATE KEY-----
I certificati devono includere come minimo il certificato di entità finale e i certificati intermedi. Idealmente, include anche il certificato CA radice.
Assicurati che il file .p12 o .pfx sia protetto da passphrase.
Crea un certificato client autofirmato (facoltativo)
I certificati client possono essere emessi da CA o autofirmati, a seconda delle esigenze.
Per generare un certificato client autofirmato, utilizza il seguente comando openssl:
openssl req -newkey rsa:4096 -keyform PEM -keyout ca.key -x509 -days 3650 -outform PEM -out ca.cer
Mantieni segreti i file risultanti poiché sono certificati CA autofirmati.
Quindi, genera il file .p12 client:
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.req
openssl x509 -req -in client.req -CA ca.cer -CAkey ca.key -set_serial 101 -extensions client -days 365 -outform PEM -out client.cer
openssl pkcs12 -export -inkey client.key -in client.cer -out client.p12
rm client.key client.cer client.req
Una volta configurata, invia una richiesta di POST all’URL di richiamata del webhook.
Dovresti ricevere una risposta 200.
Perché Acrobat Sign rifiuta il file PFX anche dopo averlo verificato con Postman?
Se hai seguito la procedura di verifica dei file pfx descritta sopra e Acrobat Sign rifiuta ancora il file pfx, è probabile che il file sia stato generato da uno strumento Microsoft in grado di produrre un file PKCS12 non standard.
In tal caso, utilizza i seguenti comandi openssl per estrarre i certificati e la chiave privata dal file pfx e quindi generare un file PKCS12 formattato correttamente:
// Extract certificates and private key from pfx file openssl pkcs12 -info -in microsoftclientssl.pfx -passin pass:"" -out clientcert.crt -nokeys openssl pkcs12 -info -in microsoftclientssl.pfx -passin pass:"" -out clientcert.key -nodes -nocerts // Create new PKCS12 file openssl pkcs12 -export -inkey clientcert.key -in clientcert.crt -out clientcert.pfx