Soy un desarrollador de software pero un novato en lo que respecta a la seguridad en línea.
La empresa A tiene algún software de escritorio utilizado por los clientes C y D (C no relacionado con D).
La empresa B tiene un servicio web y tiene la misma C & D clientes.
C & D necesita el software de A para conectarse al servicio web de B e importar sus datos específicos.
A contacta a B y pregunta qué se necesita para lograr esto y se le dice que haga lo siguiente: -
1) Crear una clave privada
- openssl genrsa -aes256 -out chosencertificatename.key.pem 2048
- (agregar una contraseña cuando se le solicite)
2) Crear una CSR
- openssl req -key chosencertificatename.pem -new -sha256 -out
chosencertificatename.csr.pem
- (ingrese la información relevante para el certificado)
3) Envíe el CSR a B y obtenga un certificado de vuelta
- Se le emitirá un certificado válido para acceder a las API.
- También se emitirá la cadena de certificado utilizada para firmar la solicitud.
4) Asocie su clave privada utilizando un archivo PKCS12
- openssl pkcs12 -export -out your_pkcs12_file.p12 -inkey your_private_key_store.pem
-en certificate_sent_from_nucleus.pem
5) Use en su aplicación
- Insertar el certificado en su solicitud
- Cada solicitud debe contener el certificado del cliente (X509?)
- Cada solicitud también debe contener un encabezado X-USERNAME para identificar al cliente
(C y D recibirán sus propios tokens de nombre de usuario, ¿ID de texto simple?)
No estoy seguro de que esto parezca seguro ya que me parece que el certificado solo puede identificar que el software de A generó la solicitud; El encabezado X parece identificar solo los datos a devolver: si C descubre el NOMBRE DE USUARIO DE D, entonces pueden acceder a los datos de D, que parecen incluso menos seguros que la ID de usuario / contraseña.
Además, ¿es seguro pasar un certificado que tiene una clave privada incrustada?
Editar:
Al volver a leer las instrucciones enviadas por B, parece que A también necesita informar a B a qué clientes requieren acceso, y B puede escribir a esos clientes confirmando su permiso para acceder a los datos a través de la API.
¿Podría ser que el certificado devuelto por B contiene una lista incrustada de los X-USERNAMES validados?