OK, esta es otra de esas preguntas de "no tengo ninguna idea real por dónde empezar", así que espero que la respuesta sea simple. Sin embargo, realmente no sé qué buscar, y mis intentos hasta ahora no han tenido mucho uso.¿Cómo leer una clave privada para usar con OpenSAML?
Quiero leer una clave privada de un archivo (actualmente en el disco). En última instancia, la clave residirá en una base de datos, pero esto será lo suficientemente bueno por el momento y esa diferencia no debería afectar realmente el análisis del material clave. He podido crear una instancia Credential
que contiene la parte pública de la clave (confirmada por el depurador), pero parece que no puedo entender cómo leer la parte privada. El par de claves se generó como:.
openssl genrsa 512 > d:\host.key
openssl req -new -x509 -nodes -sha1 -days 365 -key d:\host.key > d:\host.cert
(Sí, sé que las claves RSA de 512 bits se rompieron hace mucho tiempo Sin embargo, para tratar de conseguir la API para trabajar, no veo ninguna razón para agotar el sistema suministro de entropía innecesariamente)
el código hasta ahora es:.
import org.opensaml.xml.security.credential.Credential;
import org.opensaml.xml.security.x509.BasicX509Credential;
private Credential getSigningCredential()
throws java.security.cert.CertificateException, IOException {
BasicX509Credential credential = new BasicX509Credential();
credential.setUsageType(UsageType.SIGNING);
// read public key
InputStream inStream = new FileInputStream("d:\\host.cert");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
inStream.close();
credential.setEntityCertificate(cert);
// TODO: read private key
// done.
return credential;
}
Pero ¿Cómo se lee el archivo host.key
en la parte de la clave privada de credential
, para que pueda utilizar la generada Credential
instancia para firmar datos?
Sí, BasicX509Credential es de OpenSAML, lo de que la supervisión. Definitivamente voy a darle una oportunidad. Y sí, sé perfectamente que las claves RSA de 512 bits no son de ninguna manera seguras, pero esta configuración particular es * estrictamente * para tratar de hacer que las cosas funcionen, por lo que la longitud de la clave no es un problema. –
Parece que funciona como un amuleto, ¡muchas gracias! Por supuesto, mi código de firma parece estar roto, pero al menos de acuerdo con el depurador, obtengo una 'Credencial' adecuada de los dos archivos en el disco. En la gira ... –
Gracias. Tuve problemas misteriosos con la redirección de < and > en Windows, por lo que es posible que desee reemplazarlos por los interruptores de entrada y salida. –