Sto provando a firmare digitalmente XML in Perl utilizzando il modulo Crypt::OpenSSL::RSA
. Sto caricando una chiave privata da un file. La chiave privata è stata generata da un keystore utilizzando Java.Firme digitali XML in Perl
Qui di seguito è il mio codice Perl:
my $private = 'my_priv.key';
my $private_key = read_file($private);
print "my private key text is\n", $private_key;
uscita, non mettere l'intera chiave qui, solo le poche prime righe :-)
> -----BEGIN PRIVATE KEY----- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKAuqJ1ZkxHZStfSt0CdEsaSYuLO
> 6zDiTpt60asVLWpLe2bf...
my $rsa_priv = Crypt::OpenSSL::RSA->new_private_key($private_key);
print "my private key is\n",$rsa_priv->get_private_key_string();
uscita :
> -----BEGIN RSA PRIVATE KEY-----
> MIICXAIBAAKBgQCgLqidWZMR2UrX0rdAnRLGkmLizusw4k6betGrFS1qS3tm3+97
> wMvFXCx0Od8eb
I risultati di $private_key
e $rsa_priv->get_private_key_string()
sono diversi. Si suppone che si comporti in questo modo?
Qualcuno è stato in grado di firmare XML utilizzando Crypt::OpenSSL::RSA
?
edit:
sto usando il codice Java per estrarre la chiave privata, il codice è come sotto `KeyStore ks = KeyStore.getInstance ("JKS");
keypass = sPass.toCharArray();
FileInputStream fis = new FileInputStream(store);
ks.load(fis, sPass.toCharArray());
fis.close();
String eol = System.getProperty("line.separator");
Key k = ks.getKey(alias, keypass);
System.out.println("....Generating the Private Key.....");
String encKey = new BASE64Encoder().encode(k.getEncoded());
System.out.println("Encoded Key: " + encKey);
BufferedWriter myKey = null;
myKey = new BufferedWriter(new FileWriter(alias + "_priv.key"));
myKey.write("-----BEGIN PRIVATE KEY-----" + eol);
myKey.write(encKey + eol);
myKey.write("-----END PRIVATE KEY-----");
myKey.close();
System.out.println("....Private Key Generated.....");`
utilizzando sia Java e Perl, perché i XMLs sto cercando di firmare sono in perl (si tratta di un intero sistema grande) e l'archivio chiavi è in java.
Primo accesso digitalmente nulla e il mio XML con firma digitale non è l'autenticazione a tutti per il sistema ricevente
Forse potrebbe aiutare se si aggiunge il comando 'keytool' utilizzato per generare la chiave privata Java. –
appena aggiunto il codice utilizzato per generare la chiave privata – qateey