2011-07-21 3 views
11

Je suis en train de se connecter au serveur d'Apple APNS avec les observations suivantes:Impossible en mesure de se connecter à APNS Sandbox serveur

1) Port 2195 est ouvert 2) Avec passphrase clé valide pour APNS_SSLCertificate_Key.pem 3) Entrust certificat (2048) téléchargé à partir https://www.entrust.net/downloads/binary/entrust_ssl_ca.cer

4) Avec la réponse telnet avec succès comme ci-dessous:

$ telnet gateway.sandbox.push.apple.com 2195 Trying 17.172.232.226... Connected to gateway.sandbox.push-apple.com.akadns.net. Escape character is '^]'.

Mais quand je lance la commande openssl suivante dans mon serveur pour tester la connectivité APNS:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert APNS_SSLCertificate_Key.pem -debug -showcerts -CAfile server-ca-cert.pem 

Je reçois erreur comme suit:

unable to load certificate 57013:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-35/src/crypto/pem/pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

Alors s'il vous plaît suggérer comment résoudre ce problème

Merci à l'avance ......

Répondre

36

je suis tombé sur ce même problème; ce qui a finalement résolu l'erreur était de réexporter le certificat Entrust à partir de l'application System Roots of OS/X Keychain Access.

Pour être complet, je vais vous donner une explication complète de la façon dont j'ai créé la clé/fichiers cert (quelque chose qui aurait dû être dans TechNote d'Apple 2265: https://developer.apple.com/library/content/technotes/tn2265/_index.html)

Création de votre APN-cert-et-clé :

  1. Exécuter l'accès au porte-clés; sélectionnez "login" Keychain et "My Certificates" catégorie
  2. Sélectionnez le certificat au format de nom "Apple Push IOS Push Services: ..."
  3. Exportez le certificat (dans le menu, sous "Fichier"). "Exporter les articles")
  4. Exporter au format .p12.
    Ceci contient maintenant votre certificat et votre clé privée dans un format d'échange crypté. L'étape suivante consiste à le convertir en un mot de passe fichier .pem protégé
  5. Utilisation du terminal, exécutez la commande suivante (en utilisant vos propres noms de fichiers, bien sûr):

    openssl pkcs12 -in PushCertKey.p12 -out PushCertKey.pem

    (Vous devrez entrer le mot de passe pour le fichier .p12 et fournir une autre phrase secrète pour le fichier .pem.)

    Si vous vraiment vraiment vraiment ne veulent pas un mot de passe sur le.fichier pem, essayez:

    openssl pkcs12 -in PushCertKey.p12 -out PushCertKeyNoCrypt.pem -nodes

Création du fichier de certificat CA:

  1. Liste item
  2. Exécuter Trousseau d'accès aux applications
  3. Go Roots système
  4. Export le certificat nommé "Entrust.ne t Autorité de certification (2048) "vers un fichier .pem.

    Remarque: Le conteneur Mon Roots a quatre certificats Entrust; deux d'entre eux avec le nom "Entrust.net Certification Authority (2048)" (mais avec des extensions de certificat différentes, via Get Info). Les deux certificats «Entrust.net Certification Authority (2048)» ont permis de valider la chaîne de confiance; les deux autres certificats Entrust ne fonctionnaient pas. Plus important encore, le certificat Entrust pointé par l'Apple TechNote 2265 ne fonctionne pas non plus. Assurez-vous que vous exportez au format .pem;

    la valeur par défaut est .cer et cette étape est facile à manquer.

Exécutez la commande de vérification:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushCertKey.pem -debug -showcerts -CAfile "Entrust.net Certification Authority (2048).pem" 

Ce serveur et processus suppose que vous êtes la connexion au serveur APN sandbox Dev d'Apple; Si vous essayez d'utiliser le serveur APN de production, vous devrez utiliser le serveur et le port corrects.

Pour plus d'informations sur OpenSSL, je propose les pages suivantes:

+1

Très instructif, merci. –

+2

Pour convertir le certificat Entrust (j'ai utilisé celui lié à la TechNote) de .cer au format PEM sur la ligne de commande: 'openssl x509 -in entrust.cer -out entrust.pem' –

+0

Vous pouvez obtenir le certificat Entrust CA entrust_2048_ca.cer de: https://www.entrust.net/downloads/root_request.cfm# Il est déjà au format pem. – mikesl

0

problèmes SSL: Step fix sage. La plupart des problèmes sont dus aux problèmes de clés privées, qui peuvent être résolus comme suit.

Suivez les commandes suivantes et créez le fichier .p12 en utilisant openssl.

  1. Vous aurez besoin developer_identity.cer < = téléchargement d'Apple mykey.p12 < = Votre clé privée

  2. exécuter ces commandes dans votre terminal où OpenSSL est configuré, installé ou travail:

    • openssl x509 -développeur_identité.cer -inform DER -out identité_developpeur.pem -outform PEM
    • openssl pkcs12 -nocerts -dans mykey.p12 -out monkey.pem
    • openssl pkcs12 -export -inkey monkey.pem -développement_identity.pem -out iphone_dev.p12

p12 final que vous aurez besoin est un fichier iphone_dev.p12 et le mot de passe que vous avez défini.

Réessayez, espérons que votre problème est résolu, comme c'est toujours le cas pour moi. :)

Questions connexes