Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2012, 16:21
Avatar de vlah
vlah
 
Fecha de Ingreso: enero-2002
Mensajes: 254
Antigüedad: 22 años, 11 meses
Puntos: 0
Pregunta Firma Electronica SAT Mexico

Hola que tal, les comento que estoy tratando de validar un certificado para ser preciso es el *.cer, estoy ocupando las librerias de bouncycastle y siempre me manda que el servidor esta ocupado, alquien sabe por que? les dejo parte del codigo ya que llevo varios dias con ello saludos..


CertificateID certificadoId = null;
X509Certificate cert =null;
X509Certificate cert2 =null;
BigInteger serial =null;
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider ());
try {
InputStream fr = new FileInputStream("c://******.cer");
CertificateFactory cf =
CertificateFactory.getInstance("X509");
cert = (X509Certificate)
cf.generateCertificate(fr);
serial = cert.getSerialNumber();
serial = new BigInteger("0");

FileInputStream fr2 = new FileInputStream("c://*****.crt");
CertificateFactory cf2 =
CertificateFactory.getInstance("X509");
cert2 = (X509Certificate)
cf.generateCertificate(fr2);
//add
TrustAnchor ta = new TrustAnchor(cert, null);
Set trustedCertsSet = new HashSet();
trustedCertsSet.add(ta);
//


} catch (Exception e) {
e.printStackTrace();
}

/*Se genera la petición con el certificado a verificar y su número de serie*/

OCSPReqGenerator ocspReqGen = new OCSPReqGenerator();
try {
certificadoId = new CertificateID(CertificateID.HASH_SHA1,cert2, serial);

} catch (OCSPException e) {
e.getMessage();
}


//ocspReqGen.addRequest(new CertificateID(CertificateID.HASH_SHA1,cert, cert.getSerialNumber()));

try {
ocspReqGen.addRequest(certificadoId);

BigInteger time = BigInteger.valueOf(System.currentTimeMillis());

Vector<DERObjectIdentifier> oids = new Vector<DERObjectIdentifier>();
Vector<X509Extension> values = new Vector<X509Extension>();

oids.add(OCSPObjectIdentifiers.id_pkix_ocsp_nonce) ;
values.add(new X509Extension(false, new DEROctetString(time.toByteArray())));

ocspReqGen.setRequestExtensions(new X509Extensions(oids, values));

OCSPReq ocspReq = ocspReqGen.generate();
byte[] ocsp= ocspReq.getEncoded();


/* Se establece la conexión HTTP con el ocsp */

URL url = new URL("http://www.sat.gob.mx/ocsp");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
/* Se configuran las propiedades de la petición HTTP */

con.setRequestProperty("Content-Type", "application/ocsp-request");
con.setRequestProperty("Accept", "application/ocsp-response");
con.setRequestMethod("POST");
//con.setRequestProperty("Content-Length", String.valueOf(ocsp.length));
con.setDoOutput(true);
con.connect();
OutputStream out = con.getOutputStream();
DataOutputStream dataOut = new DataOutputStream(new BufferedOutputStream(out));
//out.write(ocsp,0,ocsp.length);
//out.close();

/* Se obtiene la respuesta del servidor OCSP */
dataOut.write(ocspReq.getEncoded());
dataOut.flush();
dataOut.close();



/* Se parsea la respuesta y se obtiene el estado del certificado retornado por el OCSP */
InputStream in = (InputStream) con.getContent();

//OutputStream bs = new FileOutputStream("Ocsp.resp");


OCSPResp ocspResponse = new OCSPResp(in);
//comprobar si la respuesta es successfull



/* Se verifica el tipo de respuesta enviada*/
int status = ocspResponse.getStatus();

if(ocspResponse.getStatus() == OCSPResponseStatus.SUCCESSFUL){
System.out.println("RESPUESTA:: Response has valid confirmations");
}else if (ocspResponse.getStatus() == OCSPResponseStatus.INTERNAL_ERROR){
System.out.println("RESPUESTA:: Internal error in issuer");
}else if (ocspResponse.getStatus() == OCSPResponseStatus.MALFORMED_REQUEST){
System.out.println("RESPUESTA:: Illegal confirmation request");
}else if(ocspResponse.getStatus() == OCSPResponseStatus.SIG_REQUIRED){
System.out.println("RESPUESTA:: Must sign the request");
}else if(ocspResponse.getStatus() == OCSPResponseStatus.TRY_LATER){
System.out.println("RESPUESTA:: Try again later.");
}else if (ocspResponse.getStatus() == OCSPResponseStatus.UNAUTHORIZED){
System.out.println("RESPUESTA:: Request unauthorized");
}


} catch (Exception e) {
e.printStackTrace();
}


salu2.
__________________
<<<<VLAH>>>>> :-D