4

iPhone 用のスタンドアロン アプリケーションを実装しようとしています。iPhoneクライアントにApple Push通知を使用したい。javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca を取得しています apns ゲートウェイに接続するための Java コードは次のとおりです。

int port = 2195;
String hostname = "gateway.sandbox.push.apple.com";
char[] passwKey = "password".toCharArray();

KeyStore ts = KeyStore.getInstance("PKCS12");
ts.load(new FileInputStream("/path/to/file/Cert.p12"), passwKey);
KeyManagerFactory tmf = KeyManagerFactory.getInstance("SunX509");
tmf.init(ts, passwKey);

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(tmf.getKeyManagers(), null, null);
SSLSocketFactory factory = sslContext.getSocketFactory();

SSLSocket socket = (SSLSocket) factory.createSocket(hostname,port); 
String[] suites = socket.getSupportedCipherSuites();
socket.setEnabledCipherSuites(suites);
//start handshake
socket.startHandshake(); 

Linux マシンにどのような SSL 証明書をどのようにインストールできるかを理解するのを手伝ってください。

編集 :

Cert.p12を再作成したところ、プログラムが動作し始めました。動作しない正確な原因はわかりませんが、Cert.p12 ファイルが破損している可能性があります。

ご協力ありがとうございました。

4

2 に答える 2

1

不明な_ca:

有効な証明書チェーンまたは部分的なチェーンを受け取りましたが、CA 証明書が見つからなかったか、既知の信頼できる CA と一致しなかったため、証明書は受け入れられませんでした。このメッセージは常に致命的です。

証明書を jre の cacerts ファイル (通常は lib/security の下にあります) に追加する必要がある場合があります。詳細については、 keytoolとその -import オプションのドキュメントを参照してください。

cacerts ファイルと keytool をさらに調べることで、これを行う方法の例を見つけることができるでしょう。

于 2009-08-06T15:08:11.077 に答える
0

同じ問題がありました。

「すべての証明書を含む」でIEにインポート/エクスポートすると解決しました。

于 2009-12-18T11:06:35.807 に答える