5

証明書を SQL Server データベースにインポートしました。

 create certificate MyCertificate from file = 'c:\certificate.cer';

今、その証明書の公開鍵を取得したいと思います。どうやってするの ?

できます

select * from sys.certificates

しかし、公開鍵列はありません。

私はそれをディスクに保存できることを知っています

backup certificate MyCertificate to file = 'c:\MyCertificate.cer';

しかし、それは私が望むものではありません。公開鍵を教えたり、証明書全体を取得したりするためにデータベースが必要なだけですが、ファイルを使用したくありません。

編集:

SQL Server と証明書を使用して、データベース テーブル内の行のデジタル署名を検証したいと考えていました。ただし、関数VerifySignedByCertは証明書の有効期限をチェックしないため (このメモによると:暗号化と署名のための組み込み関数は証明書の有効期限をチェックしません。これらの関数のユーザーは、証明書の有効期限をいつチェックするかを決定する必要があります。http :/ /msdn.microsoft.com/en-US/library/ms187798%28v=SQL.90%29.aspx ) C# コードで手動で行う必要があります。

そのため、証明書の公開鍵と有効期限 (sys.certificates にあります) を取得したかったのです。しかし、証明書をテーブルの varbinary 列に格納するのが最善の選択肢のようです。または、これを達成するための他のより良い方法はありますか?

ご協力ありがとうございました

4

3 に答える 3

1

探している情報は、master データベースの syscerts テーブルにあります。ただし、そのデータを取得する簡単な方法はありません。キーを取得しようとしている場合は、証明書が SQL Server によって使用されることを意図している目的で証明書を使用しようとしていない可能性がありますか?

証明書を SQL Server に保存しようとしているが、SQL Server のセキュリティのために証明書を使用していない場合は、それらをテーブルの varbinary 列に保存してみてください。そのようなものはあなたのために働きますか?

あなたが達成しようとしていることについてもう少し情報を提供していただければ、もう少しお手伝いできるかもしれません。

SQL Server の証明書の概要は次のとおりです。 http://www.mssqltips.com/sqlservertip/1319/sql-server-2005-encryption-certificates-overview/

于 2013-01-08T14:43:01.587 に答える
-1

テーブルを作成します。 ('PinNumber1'),'473567000000')) INSERT INTO Atm(PIN) 値 (EncryptByCert(cert_id('PinNumber1'),'4678904290000'))

その後、次のように証明書を作成します。

CREATE CERTIFICATE PinNumber1 ENCRYPTION BY PASSWORD ='3e@k80*^' WITH SUBJECT = 'This Pin Number is Encrpted'

後で解読したい場合:-

AID=2 の Atm から convert(varchar(max), DecryptByCert(cert_id('PinNumber1'),PIN,N'3e@k80*^')) を選択します

于 2015-03-06T05:55:55.427 に答える