Java SSLサーバーにJava SSLクライアントとC++ SSLクライアントを接続できるようにします。Javaクライアントは問題なく接続します。C++ SSLクライアントが接続できるようにしたいので、この目的のために、serverpub.jksを.pemファイルにエクスポートしてC++クライアントができるようにしたいと思いました。 sslコンテキストにロードできますが、これは機能していません。
以下は、Javaクライアントとサーバーのjksキーストアを作成した方法と、serverpub.jksを.pemファイルにエクスポートしようとしている方法の説明です。
手順1:クライアントキーストアとサーバーキーストアを生成する
c:\keytool -genkeypair -alias myserverkeys -keyalg RSA -dname "CN=my Server,OU=kl2217,O=kl2217org,L=NYC,ST=NY,C=US" -keypass password -keystore server.jks -storepass password
c:\keytool -genkeypair -alias myclientkeys -keyalg RSA -dname "CN=my Client,OU=kl2217,O=kl2217org,L=NYC,ST=NY,C=US" -keypass password -keystore myclient.jks -storepass password
手順2:サーバーの公開証明書をエクスポートし、個別のキーストアを作成します
c:\keytool -exportcert -alias myserverkeys -file serverpub.cer -keystore myserver.jks -storepass spacex
c:\keytool -importcert -keystore serverpub.jks -alias serverpub -file serverpub.cer -storepass password
手順3:クライアントの公開証明書をエクスポートし、個別のキーストアを作成します
c:\keytool -exportcert -alias myclientkeys -file clientpub.cer -keystore myclient.jks -storepass spacey
c:\keytool -importcert -keystore clientpub.jks -alias clientpub -file clientpub.cer -storepass password
ここまでは順調ですね。
ここで私は問題にぶつかります。
ステップ4:serverpub.jksを.pem形式に変換する
c:\keytool -importkeystore -srckeystore serverpub.jks -destkeystore serverpub.p12 -srcstoretype jks -deststoretype pkcs12
そして返信
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Problem importing entry for alias serverpub: Java.security.KeyStoreException: TrustedCertEntry not supported.
Entry for alias serverpub not imported.
Do you want to quit the import process? [no]:
これは何を意味するのでしょうか?私は何が間違っているのですか?
ステップ5:だっただろう
c:\openssl pkcs12 -in serverpub.p12 -out serverpub.pem
しかし、ご覧のとおり、私はそれほど遠くまで行くことができませんでした。
これを正しく行う方法を理解するのに助けていただければ幸いです。
ありがとう
残念ながら、keytoolは、PEMファイルが信頼できる証明書の概念をサポートしていないという意見があるため、トラストストアから明示的にエクスポートすることはできません。したがって、代わりにcerファイルのキーストアを使用します。
Cerから:
openssl x509 -inform der -in serverpub.cer -out serverpub.pem
キーストアから:
keytool -importkeystore -srckeystore server.jks -destkeystore server.p12 -deststoretype PKCS12
openssl pkcs12 -in server.p12 -nokeys -out server.cer.pem
openssl pkcs12 -in server.p12 -nodes -nocerts -out server.key.pem
または単に試してみてください
keytool -exportcert -alias myserverkeys -keystore serverpub.jks -rfc -file serverpub.pem
次の単純な1行のコマンドは、証明書をPEM形式にエクスポートします。はい、opensslが必要です。keytoolだけではこれを実行できません。
keytool -exportcert -alias <CERT-ALIAS> -keystore <KEYSTORE-FILE> | openssl x509 -inform DER >cert.pem