Sono uno sviluppatore di software ma un principiante quando si tratta di sicurezza online.
La società A ha alcuni software desktop utilizzati dai clienti C e D (C non correlati a D).
La società B ha un servizio web e ha lo stesso C & D clienti.
C & D ha bisogno del software di A per connettersi al servizio web di B e importare i dati specifici.
Un contatto B e chiede cosa è necessario per ottenere ciò e viene detto di fare quanto segue: -
1) Crea una chiave privata
- openssl genrsa -aes256 -out chosencertificatename.key.pem 2048
- (aggiungi una password quando richiesto)
2) Creare un CSR
- openssl req -key chosencertificatename.pem -new -sha256 -out
chosencertificatename.csr.pem
- (inserire le informazioni pertinenti per il certificato)
3) Invia il CSR a B e ottieni di nuovo un certificato
- Ti verrà rilasciato un certificato valido per l'accesso alle API.
- Sarà anche emessa la catena di certificati utilizzata per firmare la richiesta.
4) Associa con la tua chiave privata usando un file PKCS12
- openssl pkcs12 -export -out your_pkcs12_file.p12 -inkey your_private_key_store.pem
-in certificato_sent_from_nucleus.pem
5) Utilizzare nella domanda
- Incorpora il certificato nella tua applicazione
- Ogni richiesta deve contenere il certificato del Cliente (X509?)
- Ogni richiesta deve contenere anche un'intestazione X-USERNAME per identificare il cliente
(C e D riceveranno i propri token username - plaintext ID?)
Non sono sicuro che questo sembra sicuro poiché mi sembra che il certificato possa solo identificare che il software di A ha generato la richiesta; l'X-Header sembra solo identificare i dati da restituire - se C trova l'X-USERNAME di D allora possono accedere ai dati di D che sembrano ancora meno sicuri di userID / password.
Inoltre, è sicuro passare un certificato che contiene una chiave privata?
Modifica:
Rileggendo le istruzioni inviate da B, sembra che A abbia anche bisogno di informare B che i clienti richiedono l'accesso, ragion per cui B può scrivere a quei clienti che confermano la loro autorizzazione ad accedere ai dati tramite l'API.
Potrebbe essere che il certificato restituito da B contenga un elenco incorporato di X-USERNAMES validati?