待って、どの証明書の有効期限が切れましたか? 彼らのものだった場合、新しいファイルを送信する必要はありませんでした (結局のところ、たとえば、stackoverflow.com の SSL 証明書の有効期限が切れて新しい証明書がインストールされたときに、ブラウザーを更新する必要はありません)。相互認証 (クライアント証明書認証) を行っている場合は、4 つの証明書が関係します: 自分の証明書、その証明書、自分の証明書に署名した機関の証明書、およびその証明書に署名した機関の証明書です。彼らはあなたに証明書を送信し、あなたが信頼する認証局によって適切に署名されていることを確認します (それがトラストストアの目的です - これは、彼らの側から証明書に署名するために信頼する認証局のリストです)。続いて、証明書を送信すると、信頼できる認証局によって適切に署名されていることが確認されます。(もちろん、これらはすべて、SSL ハンドシェイク手順によって JSSE の舞台裏で自動的に行われます)
証明書は、そのような名前が特定の公開鍵によって識別されるという (署名された) アサーションであることを思い出してください。そのため、証明書の有効期限が切れている場合は、新しい証明書を生成し、既に信頼している CA によって署名され、古い証明書をこの証明書に置き換えます。ソフトウェアが (舞台裏の SSL ハンドシェイクの一部として自動的に) 新しいものを取得すると、署名者 (「発行者」) が誰であるか、信頼できる機関のリストにあるかどうか (および適切に署名されているかどうか) がチェックされます。 )。これがチェックアウトされると、自動的に承認されます。認証局を変更していて、新しい認証局をまだ信頼していない場合を除き、これを実現するために帯域外で何かを送信する必要はありません。もしそうなら、あなたは使用することができます
keytool -import -keystore <truststore> -file <certificate file> -alias <someca>
一方、証明書の有効期限が切れている場合は、要求されていないものを送信するべきではありません。代わりに、次の方法で CSR を生成する必要があります。
keytool -genkey -alias <myalias> -keystore <keystore>.p12 -storetype pkcs12
keytool -certreq -alias <myalias> -file request.csr -keystore <keystore>.p12 -storetype pkcs12
これにより、キーストアが新しい秘密鍵で更新され、「request.csr」という名前のファイルが作成されます。このファイルを署名のために送信する必要があります。彼らは署名付き証明書で応答し、次を使用してキーストアにインポートします。
keytool -import -alias <myalias> -file <signed certificate>.cer
私が推測しなければならない場合、彼らはあなたのためにこれらの3つのステップを実行しようとし、無効な証明書と対応する秘密鍵を送ろうとしたようです-Javaは(当然です!)インポートを阻止するために最善を尽くしますこれは、秘密鍵自体が、信頼されていないチャネル (電子メールだと思いますか?) を介して送信されたときに汚染されたためです。これは、PKI の目的を無効にします。