Erro de certificado SSL: certificate_unknown

10

Eu quero criar um servidor de notificação por push e ao instalar o certificado SSL e o arquivo .p12 no servidor estamos enfrentando o erro abaixo: Eu quero saber o que há de errado com o certificado ssl porque estou recebendo um erro certificate_unknown.

main, RECV TLSv1 ALERT:  fatal, certificate_unknown
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
Error pushing notification(s):
Invalid certificate chain (Received fatal alert: certificate_unknown)!  Verify that the keystore you provided was produced according to specs...
      at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:359)
      at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:301)
      at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:258)
      at javapns.Push.payload(Push.java:122)
      at javapns.Push.alert(Push.java:36)
      at com.applicationname.pns.PushNotification.main(PushNotification.java:31)

// código-fonte

    /**
     * 
     */
    package com.applicationname.pns;

    import org.json.JSONException;

    import javapns.Push;
    import javapns.devices.Device;
    import javapns.notification.Payload;
    import javapns.notification.PushNotificationManager;
    import javapns.notification.PushNotificationPayload;


    public class PushNotification
    {
        private static final String HOST = "gateway.sandbox.push.apple.com";
        private static final int PORT = 2195;
        private static final int BADGE = 66;
        private static String iPhoneId = "5696ee2fa44c61fd21a7987d2b1bcf57faa1603e63cb57ff204b158fb90d28a3";
        private static String certificate = "D:/./trunk/Development/JavaPNS/src/com/applicationname/pns/privateKey.p12";
        private static String passwd = "password@1234";

        /**
         * @param args
         */
        public static void main(String[] args)
        {
            Push.alert("Hello World!", certificate, passwd, false,iPhoneId);

            PushNotificationPayload payLoad = new PushNotificationPayload();

            try
            {
                payLoad.addAlert("Hello World!");
                payLoad.addBadge(10);
            }
            catch (JSONException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }


}
    
por User97693321 31.10.2011 / 02:37

2 respostas

8

É incomum carregar a chave privada como uma solicitação do cliente para um soquete SSL. Eu pessoalmente acho que você deveria estar carregando a chave pública. A chave privada é carregada pelo soquete SSL no lado do servidor. A única razão pela qual você precisaria da chave privada é para agir como um servidor e aceitar conexões do outro lado, mas você não parece estar fazendo isso.

Isso pode explicar a mensagem "cert in wrong format".

Em referência a:

private static String certificate = "D:/./trunk/Development/JavaPNS/src/com/applicationname/pns/privateKey.p12"
    
por 08.11.2011 / 23:22
6

Acho que o erro é óbvio, mas sua cadeia de certificados não verifica seu certificado corretamente. Talvez você esteja perdendo um ou mais dos certs de encadeamento necessários para verificar o seu certificado final?

O que quer que seja, o erro fornece instruções claras para "Verificar se o keystore que você forneceu foi produzido de acordo com as especificações ...".

Não há nada que alguém neste site possa adicionar além de ler o que sua mensagem de erro diz e fazer isso - nenhum de nós tem bolas de cristal, nem podemos resolver seu problema magicamente.

Não vejo sentido em postar uma pergunta em que você não nos forneça mais informações além de uma mensagem de erro MUITO clara, que informa exatamente o que fazer. Tudo o que podemos dizer é "faça o que a mensagem de erro diz!"

    
por 01.11.2011 / 16:34

Tags