GNU/Linux >> Linux の 問題 >  >> Linux

SPKAC公開鍵で署名の検証に失敗しました–OpenCAエラーを修正しました

OpenCAをインストールして認証局(CA)を設定した後、「SPKAC公開鍵で署名の検証に失敗しました」というエラーが発生しました。 」CAマシンでエンドエンティティ証明書要求に署名している間。

Error while issuing Certificate to David (filename: /home/openca/var/openca/tmp/4229D72DA1BA34B416B9.req).

OpenCA::OpenSSL returns errocode 7731075 (OpenCA::OpenSSL->issueCert: OpenSSL fails (7777067). Using configuration from /home/openca/etc/openca/openssl/openssl/User.conf
Check that the SPKAC request matches the signature
Signature verification failed on SPKAC public key
140250398984096:error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too 
large:a_object.c:108:
140250398984096:error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm:a_verify.c:206:
error in ca
).

openca-base-1.5.0とopenca-tools-1.3.0を使用しています

デバッグ:

  • OpenCAでデバッグオプションを有効にして、ユーザー証明書に署名するOpenSSLコマンドを見つけました。以下は、デバッグのスナップショットです。
OpenCA::OpenSSL->_execute_command: ca -batch -config /home/openca/etc/openca/openssl/openssl/User.conf -keyfile /home/openca/var/openca/crypto/keys/cakey.pem -passin env:pwd -extfile /home/openca/var/openca/tmp/User.ext -preserveDN -subj "/O=OpenCA Labs/OU=Users/CN=David" -spkac /home/openca/var/openca/tmp/4229D72DA1BA34B416B9.req

デバッグの詳細…

OpenCA::OpenSSL->setError: errno: 7731075
OpenCA::OpenSSL->setError: errval: OpenCA::OpenSSL->issueCert: OpenSSL fails (7777067). Using configuration from /home/openca/etc/openca/openssl/openssl/User.conf
Check that the SPKAC request matches the signature
signature verification failed on SPKAC public key
140030475425696:error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too large:a_object.c:108:
140030475425696:error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm:a_verify.c:206:
error in ca

エラー「SPKAC公開鍵での署名の検証に失敗しました 」は、問題がSPKAC公開鍵の署名中に発生していることを明確に示しています–リクエストは、以下に示すようにユーザーのブラウザウィンドウで生成されました:

ブラウザで生成されたリクエストは、SPKAC公開鍵と署名で構成されています。 SPKACはおそらくMD5を使用します その署名で。これは安全ではなく、OpenSSLはMD5を使用する署名を検証しません デフォルトで。

では、MD5を使用するリクエストを受け入れるようにOpenSSLに指示するにはどうすればよいでしょうか。方法は次のとおりです。

SPKAC公開鍵で署名の検証に失敗した問題を修正する方法

環境変数を設定しますOPENSSL_ENABLE_MD5_VERIFY OpenSSLがMD5を使用するリクエストに署名できるようにするための回避策として。 OpenCAはセッションを使用するため、コマンドラインで環境変数を設定するだけでは不十分です。プログラムで設定する必要があります。これにより、OpenCAがOpenSSLコマンドを使用して署名するたびに、設定する必要があります。

したがって、環境変数OPENSSL_ENABLE_MD5_VERIFY を設定します。 /home/openca/lib/openca/perl_modules/perl5/x86_64-linux-thread-multi/OpenCA/OpenSSL.pm ファイル:

次の行を検索します:#OpenSSLコマンドの実行

以下は、証明書署名が行われるコードです。

$self->_debug ("issueCert: openssl=$command");
 $ENV{'pwd'} = "$passwd";
 $ret = $self->_execute_command (COMMAND => $command, KEY_USAGE => $engine);
 delete ($ENV{'pwd'});
 unlink ($reqfile) if ($reqdata);
 if( not $ret ) {
 $self->setError (7731075,
 $self->{gettext} ("OpenCA::OpenSSL->issueCert: OpenSSL fails (__ERRNO__). __ERRVAL__",
 "__ERRNO__", $self->errno,
 "__ERRVAL__", $self->errval));
 return undef;
 }

上記のコードを実行する前に、以下に示すように環境変数を設定する必要があります。

$ENV{OPENSSL_ENABLE_MD5_VERIFY} = 0;

次に、OpenCAデーモンを再起動し、ユーザー証明書に署名します。動作するはずです。

Bugzilla経由


Linux
  1. ログスロットXMLのOpenCAエラーaddMessageが失敗しました。ディレクトリを作成できません[解決済み]

  2. OpenCA開始エラーを修正しますversion.pmが見つかりません

  3. 公開鍵の取得は許可されていません–WSO2MySQLエラー

  1. apt-get 更新中に GPG No Public Key NO_PUBKEY エラーを修正する方法

  2. 「ホストキーの検証に失敗しました」というエラーを修正する方法

  3. 公開鍵をサーバーにコピーする方法

  1. 「gpg:keyserver receive failed:Nodirmngr」エラーを修正する方法

  2. YUMインストール中に「GPGキーの取得に失敗しました」エラーを修正するにはどうすればよいですか?

  3. OpenStackエラーを修正する方法–ネットワークの削除に失敗しましたか? [解決済み]