1

私は周りを見回しましたが、私が望むものに完全に答える質問は見当たりませんでしたが、これが重複している場合は、質問を指摘してください.

現在、からデータを受信するJavaサーバーを作成しようとしていますSSLServerSocket。今のところ、それを印刷するだけです。最終的にはこのデータを Android から取得したいと考えていますが、現在SSLExceptionはデータのリッスンを開始する前に をスローします。

コード:

System.setProperty("javax.net.ssl.keyStore","C:\\ProgramFiles\\jre6\\bin\\server.jks");
System.setProperty("javax.net.ssl.keyStorePassword","password");
SSLServerSocketFactory factory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
ServerSocket ss = factory.createServerSocket(6543);
Socket s = ss.accept();

その後、それを処理するためのコードがさらにありますが、ハングアップしてそこで例外がスローされるため、投稿しても役立つかどうかはわかりませんが、そうであればコメントしてください。

Ubuntu での openssl のチュートリアルに従って証明書を作成し、それを転送して、次を使用してキーストアを作成しました。

keytool -import -file "C:\Documents and Settings\matt\Desktop\server.crt" -keystore server.jks

この大部分がどのように機能するかを完全には理解していないことは容易に認められます。また、これはそれ自体がかなり大きな質問だと思うので、この質問の範囲外に置いておくと思いますが、可能であればクライアントを接続する方法についても洞察が必要です. ご迷惑をおかけしましたことをお詫び申し上げます。

編集:

私が従ったチュートリアルはここにあります: http://www.akadia.com/services/ssh_test_certificate.html

再度、感謝します!

編集:

スローされる例外は次のとおりです。

javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled

私は例外をGoogleにしようとしましたが、ほとんどすべてがキーストアの作成方法を説明するチュートリアルでした(私はすでに持っているという印象を受けています). これらの検索結果をふるいにかけ続けます。

ありがとう!

4

1 に答える 1

3

このようなキーストアを作成する場合、キーストアには証明書のみを配置します。

keytool -import -file "server.crt" -keystore server.jks

必要なのは、秘密鍵と証明書を持っていることです。

認証局によって発行された証明書が既にある場合は、別の場所からそれらをインポートするか、使用が限定されている場合は自己署名証明書を作成できます。

OpenSSL で作成した証明書が自己署名されている場合 (または、独自に使用するためのミニ CA から、たとえば を使用してCA.pl)、変換を行う手間をかける価値はおそらくありません。で自己署名証明書を直接生成することもできますkeytool。公式ドキュメントの「鍵ペアの生成」の例を参照してください。keytool

keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US"
     -alias business -keypass kpi135 -keystore /working/mykeystore
     -storepass ab987c -validity 180

必ず使用してくださいcn=your.fqdn.host.name(またはcn=localhost、ローカルテストのみの場合)。(Java 7 で提供されるものは、サブジェクトの代替名もサポートしていると思いますkeytool。これはより良いでしょう。)

PKCS#12 形式 (通常はファイル) で再利用したい秘密鍵 + 証明書が既にある場合は、この質問.p12に記載されている方法を使用してインポートできます。

OpenSSL で生成したものが PEM 形式の場合、それらを OpenSSL で PKCS#12 ファイルにバンドルしてから、上記のようにインポートする方が簡単な場合があります。これはこれで行うことができます:

openssl pkcs12 -export -in cert.pem -inkey key.pem -out creds.p12
于 2011-06-21T21:48:27.750 に答える