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

OpenCAエラーデータベースから証明書を読み込めません

OpenCAがインストールされ、CA証明書が発行されたら、CA証明書のシリアル番号をクリックすると以下のエラーがスローされます。

Error Code: 6295020 [initServer:314] Cannot load certificate 404576247583593287078701 from the database.

デバッグオプションを有効にしましたが、stderror.logに関連するエラーメッセージが見つかりませんでした 。

  • インターフェイスにはCA証明書が一覧表示されますが、viewCert or viewCertFullの実行中に証明書情報を表示できません cmd操作。
  • PostgreSQLデータベースに保存されているCA_Certificateを確認しましたが、問題なく有効であるようです。
  • URIのクエリ文字列はdataTypeで問題ないようです 以下のように適切に言及されています:
cmd=viewCert&dataType=VALID_CA_CERTIFICATE&key=4045762475835932870787014.
  • 通常、lib/cmdsから実行されるコマンド etc/openca/access_control/*.xmlで構成されます ファイルとすべてが適切に構成されているようです。

では、なぜこのエラーが発生するのでしょうか。幸いなことに解決策が見つかりました。ここにあります。

エラーを修正する方法–OpenCAエラーデータベースから証明書を読み込めません

  • listCerts ファイルには、サブルーチンcmdListCertsが含まれています $queryを取ります そしてそれを解析します。
  • $dataType 抽出するものの1つです。
  • @certsList CA_CERTIFICATEを一覧表示するために機能するように見えるデータベースクエリで埋められます 。
  • $type $dataTypeで入力されます スクリプトを呼び出すリンクから解析されます。したがって、これはクエリ引数"dataType"として表示されます。 serialの後ろのリンクにあります そのリンクをクリックすると、viewCertに送信されます。 。ここでも、$dataType $queryから解析されます listCertsの場合と同じように 、しかしどういうわけか、これは私のOpenCAセットアップでは正しく機能しません。

viewCertの方法を疑った CERTIFICATEと
CA_CERTIFICATEを区別し、有効、期限切れ、
一時停止、および取り消された証明書に対するさまざまなクエリの処理方法を区別します。

これがviewCertの変更です ファイルlib/openca/perl_modules/perl5/OpenCA/AC.pmのcmd

サブルーチンgetOwnerに移動します ここには次のものがあります:

sub getOwner {

次の行を見つけます: # load the certificate

以下の行を置き換えます

my @certs;
my $certype = "CERTIFICATE";
if( not (@certs = $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CERTIFICATE"))) {
# if (length ($self->{acl}->{object}) < 60 ) { # @certs = $self->{db}->searchItems (KEY => $self->{acl}->{object}, DATATYPE => "CERTIFICATE");
#}
$certtype = "CA_CERTIFICATE";
@certs = $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CERTIFICATE");
}

あり:

my @certs;
my $certtype = "CERTIFICATE";
if( $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CERTIFICATE")) {

$certtype = "CA_CERTIFICATE";
@certs = $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CERTIFICATE");
} else {
$certtype = "CA_CERTIFICATE";
@certs = $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CA_CERTIFICATE");
}
>

問題は次の行にありました: if( not (@certs = $self->{db}->searchItems (.

それでおしまい!それが誰かに役立つことを願っています。


Linux
  1. Linux:ターミナルからのコマンドでリモートページの読み込み時間を取得するにはどうすればよいですか?

  2. OpenStackエラー–インデックスの列サイズが大きすぎます。最大列サイズは767バイトです[解決済み]

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

  1. エラーをトラブルシューティングする方法:Cpanel ::Exception ::Database ::Error /(XID 9a8sak)?

  2. mysql にログインして Linux ターミナルからデータベースにクエリを実行する方法

  3. linux-x64 バイナリは linuxmusl-x64 プラットフォーム エラーで使用できません

  1. コマンドラインからPostgresqlデータベースにログインする方法

  2. OpenCAエラーデータベースから証明書を読み込めません

  3. updatedb データベースはどこにありますか?