Erro de certificado SSL: certificate_unknown

11

Quero criar um servidor de notificação por push e ao instalar o certificado SSL e o arquivo .p12 no servidor, enfrentamos o erro abaixo: Quero saber o que há de errado com o certificado ssl porque estou recebendo o 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();
            }

        }


}
Usuário97693321
fonte
Estou apenas tentando saber se alguém também criou o servidor de desenvolvimento de notificações por push. Ele pode me ajudar se estiver faltando alguma coisa.
usar o seguinte comando
Eu dei os mesmos certificados para "urbanairship" o provedor de serviços de notificação por push para obter a notificação por push para o ambiente de desenvolvimento em que funcionava. Então, eu quero o que estou fazendo de errado para criar nosso próprio servidor de notificação por push?
usar o seguinte código

Respostas:

9

É incomum carregar a chave privada como uma solicitação do cliente em um soquete SSL. 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 é agir como um servidor e aceitar conexões do outro lado, mas você parece não estar fazendo isso.

Isso pode explicar a mensagem "cert no formato errado".

Em referência a:

private static String certificate = "D:/./trunk/Development/JavaPNS/src/com/applicationname/pns/privateKey.p12"
djangofan
fonte
6

Acho que o erro é bastante evidente, sua cadeia de certificados não verifica seu certificado corretamente. Talvez esteja faltando um ou mais dos certificados de encadeamento necessários para verificar seu certificado final final?

Seja como for, o erro fornece instruções muito claras para "Verifique se o keystore que você forneceu foi produzido de acordo com as especificações ...".

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

Não vejo sentido em postar uma pergunta em que você não nos fornece 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!"

Bart B
fonte